Maison >développement back-end >Golang >Comment initialiser correctement les structures intégrées dans Go ?
Comment initialiser des structures intégrées dans Golang
Dans Go, il est possible de définir des structures au sein d'autres structures pour créer des structures de données imbriquées. Cependant, l'initialisation de ces structures imbriquées peut présenter un défi.
Considérons l'exemple suivant :
type DetailsFilter struct { Filter struct { Name string ID int } }
Pour initialiser la structure DetailsFilter avec une structure Filter intégrée, vous pouvez rencontrer une erreur si vous essayez pour attribuer une carte générique au champ Filtre.
var M map[string]interface{} M = make(map[string]interface{}) M["Filter"] = map[string]interface{}{"Name": "XYZ", "ID": 5} var detailsFilter = DetailsFilter{Filter: M["Filter"]}}
L'erreur que vous recevrez est : "ne peut pas utiliser (type interface {}) comme tapez struct dans la valeur du champ : nécessite une assertion de type."
La raison de cette erreur est qu'un champ de structure anonyme, tel qu'utilisé ici pour le filtre, nécessite que le type exact soit spécifié lors de l'initialisation. Vous pouvez résoudre ce problème en définissant explicitement le type du champ Filtre dans la structure anonyme :
type DetailsFilter struct { Filter struct { Name string ID int } } df := DetailsFilter{Filter: Filter{Name: "XYZ", ID: 5}}
Vous pouvez également choisir de ne pas utiliser de structure anonyme pour le filtre et lui donner plutôt un type nommé :
type Filter struct { Name string ID int } type DetailsFilter struct { Filter Filter } df := DetailsFilter{Filter: Filter{Name: "XYZ", ID: 5}}
Les deux méthodes vous permettront d'initialiser la structure DetailsFilter avec la structure Filter imbriquée.
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!