golang 初始化一片空接口

golang initialize a slice of empty interfaces

我定义了一个结构体

type container struct{
    Data []interface{}
}

并希望将各种不同数据类型的切片分配给它。例如

ints := []int{2,3,4}
tmp := container{ints}

然而,编译器抱怨:

cannot use ints (type []int) as type []interface {} in field value

我应该如何定义容器结构?或者作业需要以不同的方式完成?

可以找到完整的例子here

问题是结构数组不能用作接口数组,即使各个结构实现各个接口也是如此。您需要像这样直接附加每个元素:

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]}
}