Maison > développement back-end > Golang > Quand avez-vous besoin de parenthèses lors de l'initialisation des structures Go ?

Quand avez-vous besoin de parenthèses lors de l'initialisation des structures Go ?

DDD
Libérer: 2024-11-03 00:06:02
original
1024 Les gens l'ont consulté

When do you need parentheses when initializing Go structs?

Initialisation des structures Go avec des parenthèses

Lors de l'initialisation des structures dans Go, l'utilisation de parenthèses n'est pas nécessaire mais peut être préférée dans certaines situations.

Généralement, une structure est initialisée à l'aide d'accolades, comme on le voit dans :

<code class="go">item1 := Item{1, "Foo"}</code>
Copier après la connexion

Cependant, il est également valable d'initialiser une structure avec des parenthèses :

<code class="go">item2 := (Item{2, "Bar"})</code>
Copier après la connexion

Les deux lignes créent des instances de la structure Item et attribuez-les respectivement à item1 et item2. La réflexion sur les deux structures renverra le même nom.

Les parenthèses servent principalement à lever l'ambiguïté de la syntaxe lors de l'utilisation d'une initialisation de structure dans une instruction if. Sans parenthèses, le code suivant entraînera une erreur de compilation :

<code class="go">if i := Item{3, "a"}; i.Id == 3 {
}</code>
Copier après la connexion

Le compilateur ne peut pas déterminer si l'accolade ouvrante appartient au littéral composite ou au corps de l'instruction if. L'ajout de parenthèses résout cette ambiguïté :

<code class="go">if i := (Item{3, "a"}); i.Id == 3 {
}</code>
Copier après la connexion

Dans ce cas, les parenthèses indiquent explicitement que le littéral composite est la valeur attribuée à i. Pour plus de détails, reportez-vous à la page "Struct in for loop initializer".

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