程序如下:
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指针指向的值也是会改变的。
网友评论