首页 > 后端开发 > Golang > 正文

为什么Go函数中的指针赋值有时不影响原值?

DDD
发布: 2024-10-28 01:38:02
原创
161 人浏览过

Why Does Pointer Assignment in Go Functions Sometimes Not Affect the Original Value?

Go 函数中的指针赋值:为什么会产生不同的结果?

在 Go 中将指针传递给函数时,了解如何进行指针赋值至关重要。使用指针及其对原始值的影响。本讨论围绕一个代码片段展开,该代码片段将指针传递给结构体 Test,旨在修改其 Value 字段。

第一个代码片段,尽管尝试通过将新的 Test 结构体分配给指针来更改 Value 字段(*p = Test{4}),无法更改实际值。这是因为它只是重新分配指针变量 p,而不是指向的值。 f() 函数中的 p 变量独立存在,对 main() 中 p 变量指向的值没有影响。

相反,第二个代码片段,其中 p.Value显式设置为 4,成功修改 Value 字段。这是因为 运算符取消引用指针,从而允许访问和修改实际指向的值。

作为补充说明,可以通过传递来修改存储在 main() 函数的指针变量中的地址它的地址 (*) 到 f() 函数。然而,与直接使用 p.Value.

修改指向值相比,这种方法效率较低且不方便。

以上是为什么Go函数中的指针赋值有时不影响原值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!