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 indiqué dans :
item1 := Item{1, "Foo"}
Cependant, il est également valable d'initialiser une structure avec des parenthèses :
item2 := (Item{2, "Bar"})
Les deux lignes créent des instances de la structure Item et les attribuent 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 :
if i := Item{3, "a"}; i.Id == 3 {
}
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é :
if i := (Item{3, "a"}); i.Id == 3 {
}
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".
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3