先看第一个例子:
func main() {
var i int =6
test(i)
}
func test(i interface{}) {
fmt.Println(i)
}
上面代码运行成功,输出6
我们再看另外一种代码:
func main() {
is := []int{7, 8, 9, 10}
test(is) // cannot use is (type []int) as type []interface {} in argument to test
}
func test(i []interface{}) {
fmt.Println(i)
}
上面代码报错,cannot use is (type []int) as type []interface {} in argument to test。虽然我知道报错的意思,但是不明白为什么?结合2个demo,就有点懵圈。
有知道的大神帮忙解答一下,谢谢!!
int
不是interface{}
,所以[]int
不是[]interface{}
。而且也无法转化。int
可以转换为interface{}
,所以第一个例子是可以通过的。