我定义了一个struct
type container struct{
Data []interface{}
}
并希望为其分配所有不同类型数据类型的切片。例如
ints := []int{2,3,4}
tmp := container{ints}
然而,编译器抱怨:
不能在字段值
中使用ints(type [] int)作为type [] interface {}
我应该如何定义容器结构?或者分配需要以不同的方式完成?
可以找到一个完整的示例here
答案 0 :(得分:3)
问题是结构数组不能用作接口数组,即使各个结构体实现各个接口也是如此。您需要直接附加每个元素:
package main
import (
"fmt"
)
type a struct{
Data []interface{}
}
func main() {
ints := []int{2,3,4}
tmp := a{}
for _, v := range ints {
tmp.Data = append(tmp.Data, v)
}
fmt.Println(ints, tmp) // [2 3 4] {[2 3 4]}
}