Maison > développement back-end > Golang > Structure anonyme dans Go Maps : quelle est la différence entre `struct{}{} `et `{}` ?

Structure anonyme dans Go Maps : quelle est la différence entre `struct{}{} `et `{}` ?

DDD
Libérer: 2024-10-30 03:55:03
original
507 Les gens l'ont consulté

 Anonymous Struct in Go Maps: What's the Difference Between `struct{}{} `and `{}`?

Struct anonyme : analyse des différences entre struct{}{} et {}

Problème :

En Go , l'utilisation d'une structure anonyme comme valeur dans une déclaration de map déclenche un avertissement auprès de Gogland, soulevant la question : quelle est la différence entre les déclarations struct{}{} et {} dans de tels contextes ?

Réponse :

Comprendre la sémantique derrière ces deux syntaxes est crucial.

Décomposer les déclarations

  • struct{}{} : Il s'agit d'un littéral composite composé du type de structure anonyme struct{} et de la valeur {}.
  • {} : il s'agit également d'un littéral composite, représentant uniquement la valeur {} sans explicitement en spécifiant son type.

Inférence de type et littéraux composites

En général, les littéraux composites nécessitent une déclaration de type explicite (par exemple, []int{1, 2, 3}). Cependant, lorsqu'il travaille avec des cartes, le compilateur peut déduire les types de clés et de valeurs à partir du type de carte lui-même. Cela permet de simplifier la syntaxe littérale composite, en omettant la déclaration de type lorsque des valeurs du type approprié sont fournies.

Spécification et surveillance Go

Selon la spécification Go, dans des cas comme ceux-ci, la déclaration de type peut être supprimée lorsque le type du littéral composite correspond au type attendu par la carte. Ce comportement était initialement un oubli mais est devenu une fonctionnalité valide dans Go 1.5.

Remarque : La déclaration de type ne peut pas être omise lors de l'initialisation d'autres types de littéraux composites (par exemple, des tableaux, des tranches).

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal