将结构体切片分配给接口切片
尝试将结构体切片 ([]MyStruct) 分配给接口切片 ( []interface{}),您可能会遇到编译时错误。这是因为结构体和接口具有不同的内存表示形式。
结构体的字段在内存中相邻存储,而接口则存储为两个字对,一个用于类型信息,一个用于实际数据。这种差异阻止了直接赋值。
可能的解决方案:
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
以上是如何在 Go 中将结构体切片分配给接口切片?的详细内容。更多信息请关注PHP中文网其他相关文章!