Wie übergebe ich in Go mehrere Rückgabewerte als Argumente an eine andere Funktion?

Linda Hamilton
Freigeben: 2024-10-31 08:49:02
Original
482 Leute haben es durchsucht

How to Pass Multiple Return Values as Arguments to Another Function in Go?

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()
Nach dem Login kopieren

Antwort:

Gemäß der Go-Spezifikation kann ein Funktionsaufruf Rückgabewerte einer anderen Funktion nur dann an die Parameter der aufgerufenen Funktion binden, wenn:

  • Die Anzahl der Rückgabewerte der ersten Funktion ist gleich der Anzahl der Parameter für die zweite Funktion.
  • Die Typen der Rückgabewerte sind den Typen der Parameter zuweisbar.

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:

  1. Verpacken Sie die Rücksendung Werte in einer Struktur:

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>
Nach dem Login kopieren
  1. Rückgabewerte separaten Variablen zuweisen:

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>
Nach dem Login kopieren

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!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!