无法将a
[]string直接传递给
...interface{}参数。这样做需要线性时间复制(具有n+1个分配!)。如果语言对您隐藏了,那将是一笔巨大的隐性成本。通常,将切片传递给可变参数只是将切片传递给函数。
至于其他执行此操作的方法,可以通过编写一个接受a
[]string并返回相应的的函数来使其变得更整洁
[]interface{}。当然,您必须为要执行的每个[]T->
[]interface{}转换再次编写它,但是它的功能很短,所有更改都是签名。您可以使用反射(带有固有的运行时成本)来使函数“通用”,例如:valuesVal := reflect.ValueOf(values)...for i := range values2 { values2[i] = valuesVal.Index(i).Interface() }


