Heim  >  Artikel  >  Backend-Entwicklung  >  Warum erfordert Go ein „Komma Ok“-Muster für die Rückgabe mehrerer Werte aus dem Kartenzugriff?

Warum erfordert Go ein „Komma Ok“-Muster für die Rückgabe mehrerer Werte aus dem Kartenzugriff?

Susan Sarandon
Susan SarandonOriginal
2024-11-06 18:10:03746Durchsuche

Why Does Go Require a

Problem bei der Rückgabe mehrerer Werte in Go

In Go ist die Rückgabe mehrerer Werte aus einer Funktion durch Mehrfachzuweisung möglich. Es müssen jedoch einige spezifische Anforderungen erfüllt werden.

Beachten Sie den folgenden Code:

func FindUserInfo(id string) (Info, bool) {
    it, present := all[id] // Valid comma ok assignment pattern
    return it, present
}

Dieser Code verwendet korrekt das Muster „Komma ok“, um mehrere Werte aus der Karte zu erhalten Nachschlagen. Der aktuelle boolesche Wert gibt an, ob der Schlüssel in der Karte gefunden wurde.

Der folgende Code ist jedoch ungültig:

func FindUserInfo(id string) (Info, bool) {
    return all[id] // Invalid, without a comma ok expression
}

Der Compiler markiert dies als Fehler und gibt an, dass es mehrere gibt zurückzugebende Werte, es ist jedoch nur eine Variable zugewiesen. Dieser Fehler tritt auf, weil Go eine explizite Zuweisung aller Rückgabewerte erfordert.

Um diesen Fehler zu verdeutlichen, verwendet die Go-Sprache eine „Typäquivalenz“-Regel für die Zuweisung. In den meisten Fällen bedeutet dies, dass die Zuweisung eines Werts eines Typs zu einer Variablen eines anderen Typs zu einem Fehler bei der Kompilierung führt. Beim Zugriff auf eine Karte wird jedoch eine Ausnahme gemacht.

Der Zugriff auf eine Karte gibt ein Tupel mit zwei Werten zurück: den zugrunde liegenden Wert und einen booleschen Wert, der angibt, ob der Schlüssel gefunden wurde. Dieses Tupel wird üblicherweise einem Variablenpaar mithilfe des Musters „Komma ok“ zugewiesen.

Der Go-Compiler ist speziell dafür konzipiert, dieses Muster zuzulassen, auch wenn es scheinbar gegen die Typäquivalenzregel verstößt. Daher können Sie einen Kartenwert nicht direkt mehreren Variablen zuweisen, ohne einen Komma-OK-Ausdruck zu verwenden.

In Ihrem Fall können Sie die Verwendung temporärer Variablen vermeiden, indem Sie sicherstellen, dass Sie beim Zugriff auf a immer das Komma-OK-Muster verwenden Karte. Dadurch wird sichergestellt, dass die mehreren Werte ordnungsgemäß zugewiesen werden und der Compiler keine Fehler meldet.

Das obige ist der detaillierte Inhalt vonWarum erfordert Go ein „Komma Ok“-Muster für die Rückgabe mehrerer Werte aus dem Kartenzugriff?. 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