我该如何在Go语言中将一个数组作为interface{}参数列表传递?
func Yalla(i...interface{}) {
fmt.Println(i...)
}
func main() {
Yalla(1,2,3)
Yalla([]int{1,2,3})
}
将输出:
1 2 3 //good
[1 2 3] //bad
This:
Yalla([]int{1,2,3}...)
将会生成错误。
我知道我可以创建一个新的接口数组,并逐个赋值来解决这个问题,但有没有更优雅的方法呢?
interface{}
的可变参数与int
的可变参数是不同的,这只是语言设计的方式。由于Go语言选择不支持泛型,所以目前这是你唯一的选择。如果你想要将数组或切片自动展开为可变参数,它们必须是相同的类型,这意味着你需要手动拆箱和重新封装。 - undefined