Lorsque vous travaillez avec des structures imbriquées dans Golang, l'initialisation de la structure principale peut être délicate. Ce guide vise à fournir une solution à l'erreur rencontrée lors de la tentative d'initialisation d'une structure avec une structure anonyme intégrée comme champ.
type DetailsFilter struct { Filter struct { Name string ID int } } 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"]}}
Ce code tente d'initialiser un DetailsFilter struct avec un filtre de structure anonyme imbriqué. Cependant, lorsque vous essayez d'initialiser le champ Filtre à partir d'une carte, une erreur est rencontrée :
can not use (type interface {}) as type struct in field value : need type assertion
La solution recommandée est d'éviter d'initialiser la structure anonyme imbriquée pendant la construction. Au lieu de cela, initialisez la structure de valeur zéro, puis attribuez des valeurs aux champs imbriqués :
df := DetailsFilter{} df.Filter.Name = "myname" df.Filter.ID = 123
Une autre alternative consiste à nommer le type de structure anonyme et à l'initialiser explicitement :
type Filter struct { Name string ID int } type DetailsFilter struct { Filter Filter } df := DetailsFilter{Filter: Filter{Name: "myname", ID: 123}}
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!