InterfaceSlice

问题

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
}

转载于:https://my.oschina.net/u/862160/blog/1942385

你可能感兴趣的:(InterfaceSlice)