Heim > Backend-Entwicklung > Golang > Wie übergebe ich mehrere Rückgabewerte einer Go-Funktion an eine variadische Funktion?

Wie übergebe ich mehrere Rückgabewerte einer Go-Funktion an eine variadische Funktion?

Susan Sarandon
Freigeben: 2024-12-09 08:55:06
Original
1028 Leute haben es durchsucht

How to Pass Multiple Go Function Return Values to a Variadic Function?

Wie übergebe ich mehrere Rückgabewerte an eine variadische Funktion in Go?

Hintergrund:
Go-Funktionen können mehrere Werte zurückgeben, aber Bei standardmäßigen variadischen Funktionsaufrufen ist die direkte Übergabe dieser Werte nicht möglich. In diesem Artikel wird eine Methode untersucht, um dies mithilfe einer benutzerdefinierten Wrapper-Funktion zu erreichen.

Problem:
Stellen Sie sich eine Funktion vor, die zwei ganzzahlige Werte zurückgibt:

func temp() (int, int) {
    return 1, 1
}
Nach dem Login kopieren

Wir Ich möchte diese Rückgabewerte an die variadic Printf-Funktion übergeben, um sie mithilfe einer Zeichenfolge zu drucken Formatierung:

fmt.Printf("first= %d and second = %d", temp()) // Error
Nach dem Login kopieren

Lösung:

1. Direkter Ansatz (nicht unterstützt):
Die Standard-Funktionsaufrufsyntax unterstützt nicht die Übergabe mehrerer Rückgabewerte an eine variadische Funktion. Dies liegt daran, dass variadische Parameter die letzten Parameter in einer Funktionssignatur sein müssen.

2. Rückgabewerte umschließen:
Wir können eine Wrapper-Funktion erstellen, die die Rückgabewerte einer beliebigen Funktion in ein []Interface{}-Slice umwandelt. Die variadic Printf-Funktion kann dieses Slice dann als Argumente akzeptieren.

func wrap(vs ...interface{}) []interface{} {
    return vs
}
Nach dem Login kopieren

Verwendung:
Mithilfe der Wrap-Funktion können wir nun die Rückgabewerte unserer temporären Funktion an übergeben Printf:

fmt.Printf("first= %d and second = %d", wrap(temp()...)...)
Nach dem Login kopieren

Zusätzlich Hinweise:

  • Diese Technik kann verwendet werden, um mehrere Rückgabewerte an jede variadische Funktion in Go zu übergeben.
  • Die Funktion fmt.Println kann auch zum Drucken mehrerer Rückgabewerte verwendet werden Werte direkt, unterstützt jedoch keine Zeichenfolgenformatierung.

Das obige ist der detaillierte Inhalt vonWie übergebe ich mehrere Rückgabewerte einer Go-Funktion an eine variadische Funktion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage