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!