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]}
}
我定义了一个结构体
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]}
}