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

Mary-Kate Olsen
Freigeben: 2024-11-07 19:13:03
Original
244 Leute haben es durchsucht

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

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

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

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!

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