【发布时间】:2017-02-16 06:54:48
【问题描述】:
我很想解开切片切片并将它们作为参数发送给可变参数函数。
假设我们有一个带有可变参数的函数:
func unpack(args ...interface{})
如果我们不想传入一个可以工作的接口切片,我们是否解压它并不重要:
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 (type [][]interface {}) 作为 type []interface {}
我不知道为什么会这样,因为我们可以清楚地将[]interface{} 类型传递给函数。如何以 sliceOfSlices 的解压内容作为参数调用方法 unpack?
【问题讨论】:
标签: go slice variadic-functions