Maison > développement back-end > Golang > Comment initialiser correctement les structures imbriquées dans Go en utilisant la syntaxe littérale ?

Comment initialiser correctement les structures imbriquées dans Go en utilisant la syntaxe littérale ?

DDD
Libérer: 2024-12-21 06:24:21
original
873 Les gens l'ont consulté

How to Properly Initialize Nested Structs in Go Using Literal Syntax?

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
}
Copier après la connexion

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",
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal