Heim >Backend-Entwicklung >Golang >Wie initialisiere ich verschachtelte Strukturen in Go mithilfe der Literalsyntax richtig?

Wie initialisiere ich verschachtelte Strukturen in Go mithilfe der Literalsyntax richtig?

DDD
DDDOriginal
2024-12-21 06:24:21831Durchsuche

How to Properly Initialize Nested Structs in Go Using Literal Syntax?

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!

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