Initialisation des structures imbriquées en syntaxe littérale
Dans Go, les structures imbriquées peuvent être difficiles à initialiser en utilisant la syntaxe littérale. Ce problème survient lorsque vous tentez d'accéder aux champs d'une structure parent tout en fournissant des valeurs pour les membres de la structure imbriquée.
Par exemple, considérez les structures suivantes :
type A struct { MemberA string } type B struct { A A MemberB string }
Lors de l'initialisation d'une instance de la structure B en utilisant la syntaxe littérale, il est important de noter que la structure anonyme A n'est connue que sous son nom de type lors de l'initialisation. Ses membres et fonctions ne sont exposés qu'une fois l'instance existante.
Pour initialiser le champ MemberA de la structure parent, vous devez fournir une instance valide de A :
b := B{ A: A{MemberA: "test1"}, MemberB: "test2", }
L'erreur du compilateur " Le champ B inconnu 'MemberA' dans la structure littérale" se produit car le champ MemberA fait toujours partie de la structure anonyme A et n'a pas encore été exposé au B. struct.
En résumé, pour initialiser des structures imbriquées dans une syntaxe littérale, il est nécessaire de fournir une instance valide de la structure parent lors de l'attribution de valeurs aux membres de la structure imbriquée, comme démontré dans le code d'initialisation corrigé ci-dessus.
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!