Go 函数中的指针赋值:为什么结果不同?
在 Go 中将指针传递给函数时,了解如何执行指针赋值至关重要使用指针及其对原始值的影响。本讨论围绕一个代码片段展开,该代码片段将指针传递给结构体 Test,旨在修改其 Value 字段。
第一个代码片段,尽管尝试通过将新的 Test 结构体分配给指针来更改 Value 字段(*p = Test{4}),无法更改实际值。这是因为它只是重新分配指针变量 p,而不是指向的值。 f()函数中的p变量独立存在,对main()中p变量指向的值没有影响。
相反,第二个代码片段,其中p.Value显式设置为 4,成功修改 Value 字段。这是因为 运算符取消引用指针,从而允许访问和修改实际指向的值。
作为补充说明,可以通过传递来修改存储在 main() 函数的指针变量中的地址它的地址 (*) 到 f() 函数。然而,与使用 p.Value.
直接修改指向值相比,这种方法效率较低且不方便免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3