Heim > Artikel > Backend-Entwicklung > Wie geht Gos Initialisierungssyntax für Slices und Maps mit anonymen Strukturen um?
Golangs Initialisierungssyntax für Slices und Maps
In Go kann das Deklarieren und Initialisieren von Slices und Maps anonyme Strukturen beinhalten, ein Aspekt, der dazu führen kann Verwirrung. Lassen Sie uns in die Nuancen dieser Initialisierungstechniken eintauchen.
Betrachten Sie zur Veranschaulichung die folgende Zeile aus Kapitel 7 von GOPL:
<code class="go">var tracks = []*Track{ {"Go", "Delilah", "From the Roots Up", 2012, length("3m38s")}, {"Go", "Moby", "Moby", 1992, length("3m37s")}, {"Go Ahead", "Alicia Keys", "As I Am", 2007, length("4m36s")}, {"Ready 2 Go", "Martin Solveig", "Smash", 2011, length("4m24s")}, }</code>
Dieser Code definiert einen Abschnitt von Track-Zeigern. Innerhalb der Slice-Initialisierung erscheinen die Elemente als anonyme Strukturen ohne explizite Typdeklarationen. Mit Go können Sie diese Strukturen jedoch mithilfe einer Syntaxverknüpfung initialisieren:
<code class="go">f := []<type>{{...}, {...}}</code>
Diese Syntax entspricht praktisch:
<code class="go">f := []<type>{<type>{...}, <type>{...}}</code>
wobei
<code class="go">f := []*Track{{...}, {...}}</code>
was äquivalent ist zu:
<code class="go">f := []*Track{&Track{...}, &Track{...}}</code>
Diese Syntax gilt auch für Karten:
<code class="go">f := map[string]<type>{"a": {...}, "b": {...}} // equivalent to f := map[string]<type>{"a": &<type>{...}, "b": &<type>{...}}</code>
Anonyme Strukturen hingegen beziehen sich auf Strukturen ohne separate Typdefinition. Anonyme Typen unterscheiden sich von anonymen Strukturen, bei denen nur die Struktur selbst keinen Namen hat. Eine echte anonyme Struktur wird wie folgt geschrieben:
<code class="go">f := []struct{ A, B int }{ {1, 2}, {3, 4} }</code>
In diesem Fall hat die Struktur in der Liste keine Typdefinition und wird anonym referenziert. Mit der Abkürzung „Initialisierung“ können wir diese Struktur bequem ohne einen benannten Typ initialisieren.
Das obige ist der detaillierte Inhalt vonWie geht Gos Initialisierungssyntax für Slices und Maps mit anonymen Strukturen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!