Heim >Backend-Entwicklung >Golang >Wie kann ich ein Go-Struct-Array einem Interface-Array zuweisen?
Rätsel bei der Schnittstellen-Array-Zuweisung in Go
In Go ist der Versuch, ein Struktur-Array direkt einem Schnittstellen-Array zuzuweisen, wie unten gezeigt, führt zu einem Fehler bei der Kompilierung:
x := []MyStruct{...} var y []interface{} y = x // Error: cannot use x as type []interface {}
Dieser Fehler ergibt sich aus dem grundlegenden Unterschied in der Art und Weise, wie Strukturtypen und Schnittstellen gespeichert werden Erinnerung. Schnittstellen werden als Zwei-Wort-Paare gespeichert, die Typinformationen und Daten umfassen, während Strukturtypen als benachbarte Felder im Speicher gespeichert werden.
Da diese Darstellungen nicht übereinstimmen, ist eine direkte Konvertierung zwischen den beiden nicht möglich. Es ist notwendig, die Elemente einzeln in das Ziel-Slice zu kopieren.
Um dieses Problem zu beheben, ziehen Sie eine der folgenden Optionen in Betracht:
var y []interface{} y = make([]interface{}, len(x)) for i, v := range x { y[i] = v }
var y interface{} y = xIm letzteren Szenario enthält die Schnittstelle einen abstrakten Verweis auf das zugrunde liegende []MyStruct-Slice, was polymorphes Verhalten ermöglicht.
Das obige ist der detaillierte Inhalt vonWie kann ich ein Go-Struct-Array einem Interface-Array zuweisen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!