Initialisierung verschachtelter Strukturen in literaler Syntax
In Go kann es schwierig sein, verschachtelte Strukturen mithilfe literaler Syntax zu initialisieren. Dieses Problem tritt auf, wenn versucht wird, auf Felder einer übergeordneten Struktur zuzugreifen und gleichzeitig Werte für verschachtelte Strukturmitglieder bereitzustellen.
Berücksichtigen Sie beispielsweise die folgenden Strukturen:
type A struct { MemberA string } type B struct { A A MemberB string }
Beim Initialisieren einer Instanz von Struktur B Bei Verwendung der Literalsyntax ist zu beachten, dass die anonyme Struktur A während der Initialisierung nur unter ihrem Typnamen bekannt ist. Seine Mitglieder und Funktionen werden erst verfügbar gemacht, nachdem die Instanz vorhanden ist.
Um das MemberA-Feld der übergeordneten Struktur zu initialisieren, müssen Sie eine gültige Instanz von A bereitstellen:
b := B{ A: A{MemberA: "test1"}, MemberB: "test2", }
Der Compilerfehler „ Unbekanntes B-Feld „MemberA“ im Strukturliteral“ tritt auf, weil das MemberA-Feld immer noch Teil der anonymen Struktur A ist und noch nicht für B verfügbar gemacht wurde struct.
Zusammenfassend lässt sich sagen, dass es zum Initialisieren verschachtelter Strukturen in literaler Syntax erforderlich ist, eine gültige Instanz der übergeordneten Struktur bereitzustellen, wenn den verschachtelten Strukturmitgliedern Werte zugewiesen werden, wie oben im korrigierten Initialisierungscode gezeigt.
Das obige ist der detaillierte Inhalt vonWie initialisiere ich verschachtelte Strukturen in Go mithilfe der Literalsyntax richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!