Menetapkan Slice of Structs to Interface Slice
Apabila cuba untuk menetapkan sekeping struct ([]MyStruct) kepada secebis antara muka ( []antara muka{}), anda mungkin menghadapi ralat masa kompilasi. Ini kerana struct dan antara muka mempunyai perwakilan memori yang berbeza.
Struktur mempunyai medannya disimpan bersebelahan dalam ingatan, manakala antara muka disimpan sebagai pasangan dua perkataan, satu untuk maklumat jenis dan satu untuk data sebenar. Perbezaan ini menghalang penugasan langsung.
Penyelesaian yang Mungkin:
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
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menetapkan Sekeping Struktur kepada Sekeping Antara Muka dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!