Go错误集锦-可变参数函数

51 阅读1分钟

下面这段代码输出什么?

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

参考答案及解析:A.18。知识点:可变参数函数。

可变参数底层是使用slice,所以是引用传递,所以在函数内修改某个位置的值会影响函数外slice的值。