Heim  >  Artikel  >  Backend-Entwicklung  >  Wie übergebe ich in Go mehrere Rückgabewerte als Argumente an Funktionen?

Wie übergebe ich in Go mehrere Rückgabewerte als Argumente an Funktionen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-31 09:51:01216Durchsuche

How to Pass Multiple Return Values as Arguments to Functions in Go?

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:

  1. 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>
  2. 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!

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