Wie man Rückgabewerte einer Funktion als Eingabeargumente für eine andere verwendet
Problem:
Betrachten Sie zwei Funktionen: returnIntAndString und doSomething. returnIntAndString gibt zwei Werte zurück, eine Ganzzahl und eine Zeichenfolge, während doSomething drei Argumente akzeptiert: eine Zeichenfolge, eine Ganzzahl und eine weitere Zeichenfolge.
Beim Aufruf von doSomething mit den Rückgabewerten von returnIntAndString als Argumenten tritt der folgende Fehler auf:
main.go:45: multiple-value returnIntAndString() in single-value context main.go:45: not enough arguments in call to doSomething()
Antwort:
Gemäß der Go-Spezifikation kann ein Funktionsaufruf Rückgabewerte einer anderen Funktion nur dann an die Parameter der aufgerufenen Funktion binden, wenn:
In diesem Fall gibt returnIntAndString zwei Werte zurück, doSomething erfordert jedoch ein drittes Argument. Daher ist dieser direkte Aufruf nicht zulässig.
Alternativen:
Es gibt zwei alternative Lösungen:
Erstellen Sie eine Struktur, die die Rückgabewerte von returnIntAndString enthält, und übergeben Sie eine Instanz dieser Struktur an doSomething.
<code class="go">type ReturnValues struct { I int S string } func returnIntAndString() ReturnValues { return ReturnValues{42, "Hello"} } func doSomething(msg string, values ReturnValues) { // Use values.I and values.S as needed } doSomething("Message", returnIntAndString())</code>
Weisen Sie die Rückgabewerte von returnIntAndString benannten Variablen zu und übergeben Sie diese Variablen an doSomething.
<code class="go">var i, s = returnIntAndString() doSomething("Message", i, s)</code>
Das obige ist der detaillierte Inhalt vonWie übergebe ich in Go mehrere Rückgabewerte als Argumente an eine andere Funktion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!