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

Barbara Streisand
Freigeben: 2024-11-01 02:34:40
Original
742 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Diese Syntax entspricht praktisch:

<code class="go">f := []<type>{<type>{...}, <type>{...}}</code>
Nach dem Login kopieren

wobei kann jeden Typ darstellen, einschließlich Zeiger. Somit gilt im Fall des Tracks-Slices die folgende Initialisierung:

<code class="go">f := []*Track{{...}, {...}}</code>
Nach dem Login kopieren

was äquivalent ist zu:

<code class="go">f := []*Track{&Track{...}, &Track{...}}</code>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!