我如何将 []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{} 值,但数组不会这样做,您必须自己进行转换。