- 空接口 interface{} 可以存储任何类型的数据
- 但是在和slice以及map配合时 ,要注意
[]interface{} 或者 map[string]interface{}
可能会犯这样的错误 cannot use (type []string) as type []interface {}
不能将[]T 转成 []interface , 也不能将 map[string]T 转成 map[string]interface{}
Go语言规范不允许这样做,因为两种类型在内存中没有相同的表现形式。
需要单独定义[]interface{} map[string]interface{}
把想转换的元素复制一遍到上面的类型里
func bbb(a[]interface{}) {
fmt.Println(a)
}
params2 := []string{"a", "b"}
var interfaceSlice []interface{} = make([]interface{}, len(params2))
for i, d := range params2 {
interfaceSlice[i] = d
}
bbb(interfaceSlice)
网友评论