Zuweisen eines Struktursegments zu einem Schnittstellensegment
Beim Versuch, ein Struktursegment ([]MyStruct) einem Schnittstellensegment zuzuweisen ( []interface{}) kann es zu einem Fehler bei der Kompilierung kommen. Dies liegt daran, dass Strukturen und Schnittstellen unterschiedliche Speicherdarstellungen haben.
Strukturen haben ihre Felder nebeneinander im Speicher gespeichert, während Schnittstellen als Paar aus zwei Wörtern gespeichert werden, eines für Typinformationen und eines für die tatsächlichen Daten. Dieser Unterschied verhindert eine direkte Zuweisung.
Mögliche Lösungen:
y := make([]interface{}, len(x)) for i, v := range x { y[i] = v }
type IMyStruct struct { MyStruct } func (i IMyStruct) Interface() interface{} { return i.MyStruct } x := []MyStruct{{5}, {6}} y := []interface{}{IMyStruct{x[0]}, IMyStruct{x[1]}}
var y interface{} y = x // No type conversion required
Das obige ist der detaillierte Inhalt vonWie kann ich in Go ein Struktur-Slice einem Schnittstellen-Slice zuweisen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!