Maison > développement back-end > Golang > Comment initialiser correctement les structures imbriquées dans Go à l'aide de littéraux ?

Comment initialiser correctement les structures imbriquées dans Go à l'aide de littéraux ?

Barbara Streisand
Libérer: 2024-12-17 10:34:25
original
386 Les gens l'ont consulté

How to Correctly Initialize Nested Structures in Go Using Literals?

Structures imbriquées et littéraux d'initialisation de champ

Dans Go, les structures peuvent intégrer d'autres structures, appelées structures imbriquées. Lors de l'initialisation de structures imbriquées avec des valeurs de membre littérales, il est courant de rencontrer un problème où le compilateur signale un champ inconnu dans la structure parent.

Par exemple, considérons le code suivant :

type A struct {
    MemberA string
}

type B struct {
    A
    MemberB string
}

b := B {
    MemberA: "test1",
    MemberB: "test2",
}
Copier après la connexion

Ici, la structure B est définie pour contenir un champ anonyme de type A. Cependant, lorsque vous essayez d'initialiser directement le champ MemberA de la structure A imbriquée, le compilateur renvoie un error :

unknown B field 'MemberA' in struct literal
Copier après la connexion

Cette erreur se produit car lors de l'initialisation, la structure anonyme n'est connue que par son nom de type. Les membres et fonctions associés à la structure anonyme ne sont encore exportés qu'après la création de l'instance.

Pour résoudre ce problème, vous devez fournir une instance valide de la structure anonyme (A dans ce cas) lors de l'initialisation. le champ imbriqué :

b := B {
    A: A{MemberA: "test1"},
    MemberB: "test2",
}
Copier après la connexion

En fournissant explicitement une instance de la structure anonyme, vous fournissez au compilateur les informations nécessaires pour accéder au MemberA field.

Le message d'erreur du compilateur "champ B inconnu 'MemberA' dans le littéral de structure" indique que le champ MemberA n'est pas reconnu dans le contexte de la structure B car il appartient à la structure A anonyme.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal