Maison > développement back-end > Golang > Comment initialiser correctement les structures imbriquées dans Go ?

Comment initialiser correctement les structures imbriquées dans Go ?

Linda Hamilton
Libérer: 2025-01-03 18:22:39
original
353 Les gens l'ont consulté

How to Properly Initialize Nested Structs in Go?

Initialisation des structures imbriquées dans Go [duplicata]

Lorsque vous travaillez avec des structures imbriquées dans Go, vous pouvez rencontrer une erreur si vous tentez d'initialiser la structure principale utilisant une interface comme type de structure interne. Pour résoudre ce problème, vous pouvez envisager plusieurs approches :

Duplication du type de structure anonyme

Si la structure interne est une structure anonyme, vous pouvez initialiser la structure principale struct en spécifiant explicitement à nouveau le type de la structure interne pendant la construction :

type DetailsFilter struct {
    Filter struct {
        Name string
        ID   int
    }
}

df := DetailsFilter{Filter: struct {
    Name string
    ID   int
}{Name: "myname", ID: 123}}
Copier après la connexion

Initialisation après Création

Vous pouvez également créer la structure principale avec des valeurs nulles, puis attribuer des valeurs à la structure imbriquée :

df := DetailsFilter{}
df.Filter.Name = "myname2"
df.Filter.ID = 321
Copier après la connexion

Utiliser un type de structure anonyme nommé

Vous pouvez éviter l'erreur initiale en définissant la structure interne comme un type nommé au lieu d'un type anonyme struct :

type Filter struct {
    Name string
    ID   int
}

type DetailsFilter struct {
    Filter Filter
}
Copier après la connexion

Ensuite, vous pouvez initialiser la structure principale comme suit :

df := DetailsFilter{Filter: Filter{Name: "myname", ID: 123}}
Copier après la connexion

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