以下是一个变量的示例:
names := []interface{}{"first", "second"}
如何从字符串数组动态初始化它呢?
以下是一个变量的示例:
names := []interface{}{"first", "second"}
如何从字符串数组动态初始化它呢?
strs := []string{"first", "second"}
names := make([]interface{}, len(strs))
for i, s := range strs {
names[i] = s
}
将是最简单的。
make
的方法: names := []interface{}{}
string_names := []string{"first", "second"}
for _, v := range string_names {
names = append(names, v)
}
- Kir[]interface{}{}
用零长度初始化数组,并在调用 append
时增长长度(可能涉及复制)。通常情况下,这不是问题,如果您的数组不是非常大的话。如果它们很大,使用 make
进行完整长度初始化并避免复制(因为初始大小已知)会更好。 - valappend
初始化了切片,因此这种方法可行:
var names []interface{}
names = append(names, "first")
names = append(names, "second")
这里是相同操作的变体,向append
传递了更多的参数:
var names []interface{}
names = append(names, "first", "second")
这个一行代码也可以起作用:
names := append(make([]interface{}, 0), "first", "second")
也可以先将字符串切片转换为要添加到interface{}
切片中的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")
}
}
}
另一种方式:
strs := []string{"first", "second"}
var names []string
names = append(names, strs...)