在Golang中初始化接口数组

时间:2014-01-06 16:04:37

标签: go

以下是变量的示例:

names := []interface{}{"first", "second"}

如何从字符串数组中动态初始化?

5 个答案:

答案 0 :(得分:29)

strs := []string{"first", "second"}
names := make([]interface{}, len(strs))
for i, s := range strs {
    names[i] = s
}

将是最简单的

答案 1 :(得分:14)

如果只有两个要动态添加的字符串,这也适用:

var names []interface{}
names = append(names, "first")
names = append(names, "second")

或者这个:

var names []interface{}
names = append(names, "first", "second")

答案 2 :(得分:0)

尝试这个:

new([]interface{})

演示:https://play.golang.org/p/mEyhgQJY277

答案 3 :(得分:0)

您可以使用interface {}数组进行构建。

values := make([]interface{}, 0)
values = append(values, 1, 2, 3, nil, 4, "ok")

然后在使用值时检查类型。

for _, v := range values {
    if v == nil {
        fmt.Println("it is a nil")
    } else {
        switch v.(type) {
        case int:
            fmt.Println("it is a int")
        case string:
            fmt.Println("it is a string")
        default:
            fmt.Println("i don't know it")
        }
    }
}

答案 4 :(得分:-8)

另一种方式:

strs := []string{"first", "second"}
var names []string
names = append(names, strs...)