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
Patricia Arquetteoriginal
2024-12-24 12:59:14883parcourir

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
}

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)

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",
}

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!

Déclaration:
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