Warum erfordert Go eine explizite Abtretung für mehrwertige Retouren?

Mary-Kate Olsen
Freigeben: 2024-11-06 18:24:03
Original
203 Leute haben es durchsucht

Why Does Go Require Explicit Assignment for Multi-Value Returns?

Go-Problem bei der Rückgabe mehrerer Werte

In Go ist die Rückgabe mehrerer Werte von einer Funktion eine gängige Praxis, es können jedoch bestimmte Syntaxeinschränkungen auftreten . Lassen Sie uns untersuchen, warum sich die folgenden Codeausschnitte unterschiedlich verhalten:

Gültiger Code:

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

Ungültiger Code:

func FindUserInfo(id string) (Info, bool) {
    return all[id]
}
Nach dem Login kopieren

Grund für ungültige Syntax:

Das zweite Code-Snippet versucht, zwei Werte direkt aus der Kartensuche all[id] zurückzugeben. Go erfordert jedoch die explizite Zuweisung mehrerer Rückgabewerte.

Muster „Comma Ok“:

Das Muster „Comma Ok“ von Go ist ein Mechanismus zum Extrahieren eines Werts und ein boolescher Indikator (normalerweise mit dem Namen ok) für den Zugriff auf einen Kartenschlüssel. Dieses Muster wird für Karten, Kanäle und Typzusicherungen unterstützt.

In Ihrem Fall handelt es sich um den abgerufenen Wert, und „present“ ist ein boolescher Wert, der angibt, ob der Schlüssel in der Karte vorhanden ist. Die Zuweisung mit Komma-Trennung it, present := all[id] verwendet implizit dieses Muster.

Entpacken-Methode verstehen:

Intern verwendet Go zur Handhabung die Entpacken-Methode mehrere Wertzuweisungen. Diese Methode bestimmt, ob es sich bei der Zuweisung um einen „Komma-OK“-Fall handelt, basierend auf dem Modus der Operanden (z. B. Kartenindizierung, Kanalwert, Typzusicherung).

Standardmäßig lässt die Entpackmethode nur Komma-OK-Zuweisungen zu bei Zuweisungen mit zwei Variablen auf der linken Seite. Diese Einschränkung wird in der Checker.initVars()-Methode festgelegt.

Fazit:

Das „Comma Ok“-Muster in Go ermöglicht das Abrufen mehrerer Werte aus Karten, Kanälen, und geben Sie Behauptungen ein. Allerdings ist eine explizite Zuweisung von Rückgabewerten erforderlich, und der Compiler beschränkt Komma-OK-Zuweisungen auf Szenarien, in denen auf der linken Seite zwei Variablen vorhanden sind.

Das obige ist der detaillierte Inhalt vonWarum erfordert Go eine explizite Abtretung für mehrwertige Retouren?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!