Initialisation des structures Go entre parenthèses : objectif et utilisation
Dans Go, les structures peuvent être initialisées en utilisant la syntaxe d'affectation traditionnelle, telle que :
item1 := Item{1, "Foo"}
Ou, alternativement, avec parenthèses :
item2 := (Item{2, "Bar"})
Les deux approches produisent des résultats identiques lorsqu'elles sont inspectées avec réflexion. Cependant, l'initialisation avec des parenthèses répond à un objectif spécifique.
Une différence clé apparaît lors de l'intégration syntaxique de l'initialisation de la structure dans une autre instruction, telle qu'une if conditionnelle. Sans parenthèses, l'intention devient ambiguë :
if i := Item{3, "a"}; i.Id == 3 { }
Cela entraîne des erreurs de compilation, ce qui ne permet pas de savoir si l'accolade ouvrante appartient au littéral composite ou au corps de l'instruction if.
Emploi parenthèses résout cette ambiguïté, en indiquant clairement que le littéral composite entouré entre parenthèses représente l'intégralité de l'expression à attribuer à la variable i. Cela empêche le compilateur d'interpréter mal la syntaxe :
if i := (Item{3, "a"}); i.Id == 3 { }
En résumé, l'utilisation de parenthèses lors de l'initialisation des structures Go dans une autre instruction garantit que le code reste sans ambiguïté et se compile avec succès, en particulier dans les scénarios impliquant des instructions conditionnelles ou d'autres expressions qui nécessitent une séparation claire entre le littéral composite et la syntaxe environnante.
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!