问题
var dataSlice []int = foo()
var interfaceSlice []interface{} = dataSlice
这种赋值是错误的。
原因:
[]interface{} 类型 不是interface,是元素为interface{}的slice。其背后的内存分布是不一样的。一个interface{} 占用2个字节的存储空间。
如何做
手动循环赋值到[]interface{}
var dataSlice []int = foo()
var interfaceSlice []interface{} = make([]interface{}, len(dataSlice))
for i, d := range dataSlice {
interfaceSlice[i] = d
}