Maison > développement back-end > Golang > Comment initialiser des champs de structure imbriqués dans Go à l'aide de références de champ ?

Comment initialiser des champs de structure imbriqués dans Go à l'aide de références de champ ?

Patricia Arquette
Libérer: 2024-12-24 12:59:14
original
928 Les gens l'ont consulté

How to Initialize Nested Struct Fields in Go Using Field References?

Initialisation de structure imbriquée avec des références de champ

La tâche consiste à initialiser une structure imbriquée avec des valeurs littérales tout en définissant un champ appartenant à une structure parent . Voici un exemple :

type A struct {
    MemberA string
}

type B struct {
    A
    MemberB string
}
Copier après la connexion

Les tentatives d'initialisation de MemberA directement dans un littéral de structure, comme indiqué ci-dessous, échoueront :

b := B {
    MemberA: "test1",
    MemberB: "test2",
}
fmt.Printf("%+v\n", b)
Copier après la connexion

Cela entraîne l'erreur : "champ B inconnu" MemberA' dans la structure littérale."

Pour initialiser MemberA correctement, vous devez fournir une instance valide de la structure parent, A, comme on le voit dans ce code :

b := B {
    A: A{MemberA: "test1"}, // Initialize the parent struct instance
    MemberB: "test2",
}
Copier après la connexion

Le message d'erreur du compilateur "Champ B inconnu 'MemberA' dans la structure littérale" indique que MemberA n'est pas directement un champ connu de B. Au lieu de cela, il appartient au type A intégré. Lors de l'initialisation de la structure B, l'instance anonyme A n'est connue que sous le nom de type A, et ses membres ne sont pas visibles en dehors de l'instance jusqu'à sa création.

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