Maison  >  Article  >  développement back-end  >  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
DDDoriginal
2024-11-03 00:06:02961parcourir

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>

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

<code class="go">item2 := (Item{2, "Bar"})</code>

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>

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>

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!

Déclaration:
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