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!