将for-range训环写成函数后,为什么打印出来的是数组,不是遍历每个值?

lxl635 · · 799 次点击
lxl635
驾校教练,Golang小白
消灭0回复
#1
更多评论
package main import "fmt" func main() { var p = []int{1, 2, 3, 4, 10, 8} fucnBian(1, p...) for i, v := range p { fmt.Printf("第%d,是%d\n", i, v) } } func fucnBian(m int, s ...int) { for i, v := range s { m = 1 fmt.Printf("第%d,是%d\n", i, v) } }
#2
因为你的`fucn(m int, s...int)`接受的是`s...int`,当你传入一个slice的时候,那个`...`会把他展开成一个二维slice `[][]int`,你的例子就是{{1,2,3,4,10,8}},所以range循环的第一次就会得到所有的值然后打印
#3