Heim >Backend-Entwicklung >Golang >Warum kann ich in Go nicht mehrere Werte ohne Destrukturierung zurückgeben?

Warum kann ich in Go nicht mehrere Werte ohne Destrukturierung zurückgeben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-07 19:13:03295Durchsuche

Why Can't I Return Multiple Values Without Destructuring in Go?

Mehrere Werte in Go zurückgeben: Die nuancierten Einschränkungen verstehen

In Go können Sie durch die Rückgabe mehrerer Werte mehrere Ergebnisse einer einzelnen Funktion zurückgeben . Allerdings gelten nicht alle Mehrfachrückgabeszenarien als gültig. Lassen Sie uns die Einschränkungen und eine bemerkenswerte Ausnahme von dieser Regel untersuchen.

Warum das Beispiel mit zwei Rückgabewerten gültig ist

Das von Ihnen bereitgestellte Beispiel:

func FindUserInfo(id string) (Info, bool) {
    it, present := all[id]
    return it, present
}

ist gültig, da es dem Muster „Komma ok“ folgt. Diese Redewendung wird speziell beim Zugriff auf einen Kartenschlüssel verwendet:

mapValue, ok := map[key]

Um sowohl den Kartenwert als auch den „OK“-Status abzurufen, müssen wir sie Variablen zuweisen. Der Compiler versteht, dass die Variablen „it“ und „present“ verwendet werden, um das Ergebnis der Kartenindizierungsoperation zu zerstören.

Warum das Beispiel mit einem Rückgabewert ungültig ist

Im Gegensatz dazu ist das folgende Beispiel:

func FindUserInfo(id string) (Info, bool) {
    return all[id]
}

ungültig, da es den Kartenindizierungsvorgang nicht zerstört. Dies würde zu einem einzelnen Rückgabewert führen, der nicht mit dem angegebenen Rückgabetyp der Funktion kompatibel ist.

Vermeidung temporärer Variablen nicht möglich

Ist derzeit nicht möglich Es ist möglich, die temporären Variablen in diesem speziellen Szenario zu vermeiden. Das „Komma ok“-Idiom erfordert eine explizite Zuweisung der destrukturierten Werte zu Variablen.

Fazit

Das Verständnis der Nuancen mehrerer Rückgabewerte in Go ist von entscheidender Bedeutung. Während das Muster „Komma ok“ mehrere Rückgabewerte zulässt, ist es auf Kartenindizierung, Kanalabruf und Typzusicherungen beschränkt. Folglich sind in Ihrem Fall temporäre Variablen erforderlich, wenn von einer Kartenindizierungsoperation sowohl ein Wert als auch ein „OK“-Status zurückgegeben werden soll.

Das obige ist der detaillierte Inhalt vonWarum kann ich in Go nicht mehrere Werte ohne Destrukturierung zurückgeben?. 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