Heim >Backend-Entwicklung >Golang >Können die „interface{}'-Arrays von Go Struktur-Arrays direkt enthalten?
In Go führt das direkte Zuweisen eines Struktur-Arrays zu einem Schnittstellen-Array zu einem Fehler bei der Kompilierung. Um zu verstehen, warum, schauen wir uns die zugrunde liegenden Mechanismen genauer an.
interface{} stellt einen generischen Typ dar, der jeden Wert speichern kann. Intern wird es jedoch als Paar aus zwei Wörtern dargestellt:
In Im Gegensatz zu Schnittstellen speichern Strukturen ihre Felder zusammenhängend im Speicher, ohne ein separates Typwort.
Da Strukturen und Schnittstellen unterschiedliche Speicherdarstellungen haben, können sie nicht direkt zugewiesen werden. Das Typsystem stellt dies sicher, um die Typsicherheit aufrechtzuerhalten.
Um das gewünschte Verhalten zu erreichen, ziehen Sie die folgenden Optionen in Betracht:
Verwenden eines Slice von Schnittstellen
Sie können einen Slice von Schnittstellen erstellen und die Strukturelemente zuweisen einzeln:
y := make([]interface{}, len(x)) for i, v := range x { y[i] = v }
Speichern einer Schnittstelle zum Slice
Alternativ können Sie eine Schnittstelle zum Struktur-Slice speichern:
var y interface{} y = x
Das obige ist der detaillierte Inhalt vonKönnen die „interface{}'-Arrays von Go Struktur-Arrays direkt enthalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!