这是C/C++里面的常见问题了,数组作为函数参数时是传值还是传引用,
代码example:
package main
import "fmt"
func main() {
x := [3]int{1, 2, 3}
func(arr [3]int) {
arr[0] = 7
fmt.Println(arr) //prints [7 2 3]
}(x)
fmt.Println(x) //prints [1 2 3] (not ok if you need [7 2 3])
}
本意是想更新数组x,但是因为函数是传值,在函数体内,复制了一份x,因此仅仅是函数体内的数据数据发生了变化,要想达到更新数据x数据目的,传数组指针,好生熟悉:
package main
import "fmt"
func main() {
x := [3]int{1, 2, 3}
func(arr *[3]int) {
(*arr)[0] = 7
fmt.Println(arr) //prints &[7 2 3]
}(&x)
fmt.Println(x) //prints [7 2 3]
}
有木有好熟悉的感觉...
网友评论