我如何将 []string 作为 ...interface{} 参数传递
How can i pass []string as ...interface{} argument
我知道当参数是 ... strings
时如何传递它
但这个案例有点不同:
func main() {
args := []string{"hello", "world"}
fmt.Println(args...)
}
https://play.golang.org/p/7ELdQQvdPvR
以上代码抛出错误cannot use args (type [] string) as type [] interface {} in argument to fmt.Println
实现此目标最惯用的方法是什么?
这可以通过以下两种方式之一完成:
args := []interface{}{"hello", "world"}
fmt.Println(args...)
或者:
args:=[]string{"hello", "world"}
iargs:=make([]interface{},0)
for _,x:=range args {
iargs=append(iargs, x)
}
fmt.Println(iargs...)
您可以在需要 interface{}
的地方传递 string
,但不能在需要 []interface{}
的地方传递 []string
。编译器将 string
值转换为 interface{}
值,但数组不会这样做,您必须自己进行转换。
我知道当参数是 ... strings
但这个案例有点不同:
func main() {
args := []string{"hello", "world"}
fmt.Println(args...)
}
https://play.golang.org/p/7ELdQQvdPvR
以上代码抛出错误cannot use args (type [] string) as type [] interface {} in argument to fmt.Println
实现此目标最惯用的方法是什么?
这可以通过以下两种方式之一完成:
args := []interface{}{"hello", "world"}
fmt.Println(args...)
或者:
args:=[]string{"hello", "world"}
iargs:=make([]interface{},0)
for _,x:=range args {
iargs=append(iargs, x)
}
fmt.Println(iargs...)
您可以在需要 interface{}
的地方传递 string
,但不能在需要 []interface{}
的地方传递 []string
。编译器将 string
值转换为 interface{}
值,但数组不会这样做,您必须自己进行转换。