指针赋值通过解引用修改原始变量,如*p = 20会改变x的值;函数传参时传递指针可直接修改原变量;但指针本身重新指向(如p2 = nil)不影响原始数据。

在Go语言中,指针赋值会影响原始变量,但关键在于你如何使用这个指针。
指针赋值的本质
当你把一个变量的地址赋给指针时,这个指针就指向了该变量的内存位置。之后通过指针修改值,会直接改变原始变量的内容。
例如:
x := 10p := &x // p 指向 x 的地址*p = 20 // 通过指针修改值fmt.Println(x) // 输出 20
这里 *p = 20 实际上修改了 x 所在的内存,所以 x 的值变成了 20。
立即学习“go语言免费学习笔记(深入)”;
函数传参中的指针影响
当把指针作为参数传递给函数时,函数内部可以通过指针修改原始变量。
示例:
Weights.gg
多功能的AI在线创作与交流平台
3352 查看详情
func modify(p *int) { *p = 100}x := 5modify(&x)fmt.Println(x) // 输出 100
函数 modify 接收的是 x 的地址,因此对 *p 的赋值直接影响了 x。
指针赋值本身不会自动传播修改
如果你只是将一个指针赋值给另一个指针,它们会指向同一个变量,但后续对指针本身的重新指向不会影响原始变量。
比如:
x := 10p1 := &xp2 := p1 // p2 也指向 x*p2 = 30 // 修改,x 变成 30p2 = nil // p2 被设为 nil,p1 和 x 不受影响
此时 p2 = nil 只是让 p2 不再指向任何地方,并不会改变 x 或 p1。
基本上就这些:只要是对指针解引用后赋值(即 *ptr = value),就会改原始变量;而只是改变指针的指向,不会影响原始数据。理解这一点,就能准确控制何时影响、何时隔离。
以上就是Golang指针赋值会影响原始变量吗的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1119904.html
微信扫一扫
支付宝扫一扫