可变函数参数

题目:

下面这段代码输出什么?

1
2
3
4
5
6
7
8
9
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

答案解析:

1
A

​ 由于切片是引用类型,在函数调用过程中,实际上是将切片的底层数组传递给了 hello 函数。故在函数中是对切片的底层数组进行修改,所以主函数中输出的值也随着被修改了,即18。


可变函数参数
http://example.com/2023/06/09/Go每日一题/可变函数参数/
作者
Feng Tao
发布于
2023年6月9日
更新于
2023年6月9日
许可协议