Heim  >  Artikel  >  Backend-Entwicklung  >  Wie geht Gos Initialisierungssyntax für Slices und Maps mit anonymen Strukturen um?

Wie geht Gos Initialisierungssyntax für Slices und Maps mit anonymen Strukturen um?

Barbara Streisand
Barbara StreisandOriginal
2024-11-01 02:34:40726Durchsuche

How does Go's initialization syntax for slices and maps handle anonymous structures?

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 kann jeden Typ darstellen, einschließlich Zeiger. Somit gilt im Fall des Tracks-Slices die folgende Initialisierung:

<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!

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