【问题标题】:golang initialize a slice of empty interfaces [duplicate]golang初始化一片空接口[重复]
【发布时间】:2017-04-26 05:01:49
【问题描述】:

我定义了一个结构

type container struct{
    Data []interface{}
}

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

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

但是,编译器抱怨:

不能在字段值中使用整数(类型 []int)作为类型 []interface {}

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

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

【问题讨论】:

标签: go interface slice


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 2018-01-20
    相关资源
    最近更新 更多