Heim > Backend-Entwicklung > Golang > Wie initialisiert man verschachtelte Strukturen in Golang richtig?

Wie initialisiert man verschachtelte Strukturen in Golang richtig?

Barbara Streisand
Freigeben: 2024-12-22 02:41:12
Original
317 Leute haben es durchsucht

How to Properly Initialize Nested Structs in Golang?

Initialisierung verschachtelter Strukturen in Golang

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.

Fehler aufgetreten

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"]}}
Nach dem Login kopieren

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
Nach dem Login kopieren

Lösung

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
Nach dem Login kopieren

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}}
Nach dem Login kopieren

Zusätzlich Hinweise

  • Der aufgetretene Fehler liegt daran, dass die Karte einen Interface{}-Wert enthält, der nicht direkt einer Struktur zugewiesen werden kann Feld.
  • Die Benennung des anonymen Strukturtyps ermöglicht eine explizitere Initialisierung.
  • Bei der Arbeit mit verschachtelten Strukturen ist es wichtig, die Einschränkungen verschiedener Initialisierungsansätze zu verstehen.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage