下面这段代码输出什么?
func hello(num ...int) {
num[0] = 18
}
func main() {
i := []int{5, 6, 7}
hello(i...)
fmt.Println(i[0])
}
- A.18
- B.5
- C.Compilation error
下面这段代码输出什么?
func hello(num ...int) {
num[0] = 18
}
func main() {
i := []int{5, 6, 7}
hello(i...)
fmt.Println(i[0])
}
`单行代码`
引用类型传参
m
打卡
Mark.
cao
m
A打卡,可变参数函数
打卡
打卡
mark
mark
18
打卡
可变参数是切片,切片是引用,所以func内赋值会带出来。
可变参数函数。可变参数是切片,切片是引用
mk
mark
1
可变参数是切片,切片是引用,所以func内赋值会带出
不理解,hello(i...) 这块不是把切片解开了吗,为什么还会引用同一个底层数组?
打卡
20楼 @don178
output
打卡
mark
1
码。 可变参数是切片,切片是引用,所以func内赋值会带出来。
mark
牛的
打卡
mark
可变参数是切片,切片是引用,所以func内赋值会带出来。
mark
18
打卡
m
mk
可变参数是切片,切片是引用,所以func内赋值会带出来。
mark
m
mmmmmmmmk
mark
可变参数是切片,切片是引用,所以func内赋值会带出来。
重点是底层数组的指针没变,所以是18.
可变参数是切片,切片是引用,所以func内赋值会带出来
我也是这么想的为啥啊
切片不是引用 你可以尝试 append试试