美文网首页
go关于指针值拷贝的一个易错点

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

作者: zcxzcxczcx | 来源:发表于2021-03-16 14:10 被阅读0次

程序如下:

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指针指向的值也是会改变的。

相关文章

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

    程序如下: func main() {var a = new(int)fmt.Printf("before a==...

  • Go语言学习笔记(三)

    指针 Go的指针不能运算 参数传递 Go的参数传递是值传递(值传递:开辟新的空间,拷贝传递参数的值,引用传递:引用...

  • Go 函数参数传递详解

    前言:go语言函数参数为值拷贝(指针参数为指针拷贝)。 形参和实参百科1.普通函数参数2.特殊函数参数 1.普通函...

  • go和python的深浅拷贝理解

    go深拷贝, 就是拷贝值 go浅拷贝, 拷贝引用 go中赋值就能实现拷贝,针对引用类型(slice,map,cha...

  • go map and slice 2021-10-08

    go值传递 golang是值传递,什么情况下都是值传递 那么,如果结构中不含指针,则直接赋值就是深度拷贝; 如果结...

  • C语言中的 * 和 &

    宏定义 1. 值拷贝 值拷贝:虽然赋值相同,但地址不同。 2. 指针拷贝 指针拷贝:p1和p2虽然是同一个对象,但...

  • 读书笔记17.06.02【stack】【vector】

    C++中参数传递:按值传递,指针传递和引用传递按值传递:形参是实参的拷贝。指针传递:拷贝指针,被调用函数对指针指向...

  • go 语言指针

    go 语言指针 go 语言的参数传递全部都是 值传递 用一个交换的例子学习指针

  • 深拷贝和常见一些坑

    golang 完全是按值传递,所以正常的赋值都是值拷贝,当然如果类型里面嵌套的有指针,也是指针值的拷贝,此时就会出...

  • 面试题(一)

    1. Go 语言参数传递是值传递还是引用传递 Go 语言中所有的传参都是值传递,都是一个副本,一个拷贝。因为拷贝的...

网友评论

      本文标题:go关于指针值拷贝的一个易错点

      本文链接:https://www.haomeiwen.com/subject/qwhdcltx.html