我很好奇开箱切片片段并将它们作为参数发送给可变参数函数。开箱切片片段
比方说,我们有一个可变参数参数的函数:
func unpack(args ...interface{})
如果我们wan't在它的工作原理接口片来传递,它不一样,如果我们解开与否无关紧要:
slice := []interface{}{1,2,3}
unpack(slice) // works
unpack(slice...) // works
如果我们有一片切片就会变得棘手。在这里,编译器不会让我们传递一个解压的版本:
sliceOfSlices := [][]interface{}{
[]interface{}{1,2},
[]interface{}{101,102},
}
unpack(sliceOfSlices) // works
unpack(sliceOfSlices...) // compiler error
错误说:
不能使用sliceOfSlices(键入[] []接口{})类型[]接口{ }在参数解包
我不知道为什么会发生这种情况,因为我们可以清楚地通过[]interface{}
类型进入函数。我怎样才能用解压后的内容sliceOfSlices
作为参数来调用解压方法?
游乐场例如:https://play.golang.org/p/O3AYba8h4i