代码如下,按照逻辑下面slice解包后应该没问题,可是下面的代码,有两处都报错
package main
func demo1(nums ...interface{}) {
}
func demo2(arg1 int, arg2 ...interface{}) {
}
func main() {
nums1 := []int{1, 2, 3, 4}
demo1(nums1)
demo1(nums1...) //错误
nums2 := []interface{}{1,2,3,4}
demo2(1, nums2...)
demo2(1, nums1...) //错误
demo1(1, nums2...) //错误
}
有疑问加站长微信联系(非本文作者))

[]int
和[]interface{}
是不一样的。相当于你把[]int
参数传给[]interface{}
,自然报错。但是我解包了啊
跟解不解包没有关系。
把
nums1 := []int{1, 2, 3, 4}
改为nums1 := []interface{}{1, 2, 3, 4}
我的意思是解包后应该相当于独立的参数了,类似于demo1(1,2,3,4)
另外demo1(1,nums2...)也是错的
你可以看看 GCTT 翻译的文章:Go 语言“可变参数函数”终极指南
demo1
里面的nums
是[]int
类型,demo2
里的arg2
是[]interface{}
类型谢谢,明白了
嗯嗯