„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wann benötigen Sie Klammern beim Initialisieren von Go-Strukturen?

Wann benötigen Sie Klammern beim Initialisieren von Go-Strukturen?

Veröffentlicht am 08.11.2024
Durchsuche:755

When do you need parentheses when initializing Go structs?

Initialisierung von Go-Strukturen mit Klammern

Beim Initialisieren von Strukturen in Go ist die Verwendung von Klammern nicht notwendig, kann aber in bestimmten Situationen bevorzugt werden.

Typischerweise Eine Struktur wird mit geschweiften Klammern initialisiert, wie in:

item1 := Item{1, "Foo"}

Es ist jedoch genauso gültig, eine Struktur mit Klammern zu initialisieren:

item2 := (Item{2, "Bar"})

Beide Zeilen erstellen Instanzen der Item-Struktur und weisen sie item1 bzw. item2 zu. Die Reflexion beider Strukturen gibt denselben Namen zurück.

Die Klammern dienen in erster Linie dazu, die Syntax zu verdeutlichen, wenn eine Strukturinitialisierung innerhalb einer if-Anweisung verwendet wird. Ohne Klammern führt der folgende Code zu einem Kompilierungsfehler:

if i := Item{3, "a"}; i.Id == 3 {
}

Der Compiler kann nicht bestimmen, ob die öffnende geschweifte Klammer zum zusammengesetzten Literal oder zum if-Anweisungskörper gehört. Das Hinzufügen von Klammern löst diese Mehrdeutigkeit:

if i := (Item{3, "a"}); i.Id == 3 {
}

In diesem Fall geben die Klammern explizit an, dass das zusammengesetzte Literal der i zugewiesene Wert ist. Weitere Einzelheiten finden Sie auf der Seite „Struktur in for-Schleifeninitialisierer“.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3