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>
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>
Cette syntaxe est en fait équivalente à :
<code class="go">f := []<type>{<type>{...}, <type>{...}}</code>
where
<code class="go">f := []*Track{{...}, {...}}</code>
qui équivaut à :
<code class="go">f := []*Track{&Track{...}, &Track{...}}</code>
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>
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>
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!