Bei der Arbeit mit verschachtelten Strukturen in Golang kann die Initialisierung der Hauptstruktur schwierig sein. Ziel dieser Anleitung ist es, eine Lösung für den Fehler bereitzustellen, der beim Versuch auftritt, eine Struktur mit einer eingebetteten anonymen Struktur als Feld zu initialisieren.
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"]}}
Dieser Code versucht, einen DetailsFilter zu initialisieren Struktur mit einem verschachtelten anonymen Strukturfilter. Beim Versuch, das Filterfeld aus einer Karte zu initialisieren, tritt jedoch ein Fehler auf:
can not use (type interface {}) as type struct in field value : need type assertion
Die empfohlene Lösung besteht darin, die Initialisierung der verschachtelten anonymen Struktur während der Erstellung zu vermeiden. Initialisieren Sie stattdessen die nullwertige Struktur und weisen Sie dann den verschachtelten Feldern Werte zu:
df := DetailsFilter{} df.Filter.Name = "myname" df.Filter.ID = 123
Eine andere Alternative besteht darin, den anonymen Strukturtyp zu benennen und ihn explizit zu initialisieren:
type Filter struct { Name string ID int } type DetailsFilter struct { Filter Filter } df := DetailsFilter{Filter: Filter{Name: "myname", ID: 123}}
Das obige ist der detaillierte Inhalt vonWie initialisiert man verschachtelte Strukturen in Golang richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!