Maison > développement back-end > Golang > le corps du texte

Comment la syntaxe d'initialisation de Go pour les tranches et les cartes gère-t-elle les structures anonymes ?

Barbara Streisand
Libérer: 2024-11-01 02:34:40
original
743 Les gens l'ont consulté

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

Syntaxe d'initialisation de Golang pour les tranches et les cartes

Dans Go, déclarer et initialiser des tranches et des cartes peut impliquer des structures anonymes, un aspect qui peut provoquer confusion. Examinons les nuances de ces techniques d'initialisation.

Pour illustrer, considérons la ligne suivante du chapitre 7 de 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>
Copier après la connexion

Ce code définit une tranche de pointeurs de piste. Lors de l'initialisation de la tranche, les éléments semblent être des structures anonymes sans déclarations de type explicites. Cependant, Go permet d'initialiser ces structures à l'aide d'un raccourci de syntaxe :

<code class="go">f := []<type>{{...}, {...}}</code>
Copier après la connexion

Cette syntaxe est en fait équivalente à :

<code class="go">f := []<type>{<type>{...}, <type>{...}}</code>
Copier après la connexion

where peut représenter n’importe quel type, y compris les pointeurs. Ainsi, dans le cas de la tranche de pistes, l'initialisation suivante est valable :

<code class="go">f := []*Track{{...}, {...}}</code>
Copier après la connexion

qui équivaut à :

<code class="go">f := []*Track{&Track{...}, &Track{...}}</code>
Copier après la connexion

Cette syntaxe s'applique également aux cartes :

<code class="go">f := map[string]<type>{"a": {...}, "b": {...}} // equivalent to
f := map[string]<type>{"a": &<type>{...}, "b": &<type>{...}}</code>
Copier après la connexion

Les structures anonymes, en revanche, font référence à des structures sans définition de type distincte. Les types anonymes se distinguent des structures anonymes, où seule la structure elle-même n'a pas de nom. Une véritable structure anonyme s'écrit comme suit :

<code class="go">f := []struct{
    A, B int
}{
    {1, 2}, {3, 4}
}</code>
Copier après la connexion

Dans ce cas, la structure dans la liste n'a pas de définition de type et est référencée de manière anonyme. Le raccourci d'initialisation nous permet d'initialiser facilement cette structure sans type nommé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!