golang初始化一片空接口

时间:2016-12-11 01:19:03

标签: go interface slice

我定义了一个struct

type container struct{
    Data []interface{}
}

并希望为其分配所有不同类型数据类型的切片。例如

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

然而,编译器抱怨:

  

不能在字段值

中使用ints(type [] int)作为type [] interface {}

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

可以找到一个完整的示例here

1 个答案:

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