go关于指针值拷贝的一个易错点

2021-03-16  本文已影响0人  zcxzcxczcx

程序如下:

func main() {  

var a = new(int) 

fmt.Printf("before a======%v\n", a) 

changeA(a) 

 fmt.Printf("after a======%v\n", a)

}

func changeA(a *int) { 

a = new(int)

}

打印结果如下:

结论:

这里很容易以为函数changA里的参数是指针,所以changeA函数内部可以改变外部a的值,其实这里只是指针的值拷贝。

但是如果changeA函数内部改变的是指针指向的值,那么外部a指针指向的值也是会改变的。

上一篇下一篇

猜你喜欢

热点阅读