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
Susan SarandonOriginal
2024-12-09 08:55:061029Durchsuche

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
}

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

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
}

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()...)...)

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!

Stellungnahme:
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