Rückgabewerte als Argumente für Funktionen mit mehreren Argumenten
Beim Umgang mit Funktionen, die mehrere Werte zurückgeben, ist es möglich, diese Werte als Eingabe zu verwenden Argumente für andere Funktionen. Es gelten jedoch bestimmte Einschränkungen, wenn die Empfangsfunktion über zusätzliche Parameter verfügt.
Betrachten Sie den folgenden Code:
<code class="go">func returnIntAndString() (i int, s string) {...} func doSomething(msg string, i int, s string) {...}</code>
Wenn wir versuchen, die Rückgabewerte von returnIntAndString() direkt an doSomething() zu übergeben :
<code class="go">doSomething("message", returnIntAndString())</code>
Go wird sich mit den Fehlern beschweren:
multiple-value returnIntAndString() in single-value context not enough arguments in call to doSomething()
Das liegt daran, dass Go nur zulässt Übergeben eines einzelnen Werts als Argument an eine Funktion, auch wenn der Rückgabewert der vorherigen Funktion mehrere Werte liefert.
Um dieses Problem zu beheben, haben Sie zwei Möglichkeiten:
Rückgabewerte zuweisen:
Weisen Sie die Rückgabewerte temporären Variablen zu und übergeben Sie sie einzeln an doSomething().
<code class="go">i, s := returnIntAndString() doSomething("message", i, s)</code>
Spezifische Werte zurückgeben:
Gibt in der Funktion returnIntAndString() eine benannte Struktur mit Feldern für jeden Wert zurück. Übergeben Sie dann die Struktur an doSomething().
<code class="go">type Result struct { I int S string } func returnIntAndString() Result {...} res := returnIntAndString() doSomething("message", res.I, res.S)</code>
Denken Sie daran, dass die spezifischen Regeln von Go beim Zuweisen von Argumenten keine zusätzlichen Parameter neben einer mehrwertigen Rückgabewertfunktion zulassen. Wenn die in der Sprachspezifikation aufgeführten spezifischen Bedingungen nicht erfüllt sind, müssen Sie eine der bereitgestellten Lösungen verwenden.
Das obige ist der detaillierte Inhalt vonWie übergebe ich in Go mehrere Rückgabewerte als Argumente an Funktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!