Go 函数中的指针赋值:为什么会产生不同的结果?
在 Go 中将指针传递给函数时,了解如何进行指针赋值至关重要。使用指针及其对原始值的影响。本讨论围绕一个代码片段展开,该代码片段将指针传递给结构体 Test,旨在修改其 Value 字段。
第一个代码片段,尽管尝试通过将新的 Test 结构体分配给指针来更改 Value 字段(*p = Test{4}),无法更改实际值。这是因为它只是重新分配指针变量 p,而不是指向的值。 f() 函数中的 p 变量独立存在,对 main() 中 p 变量指向的值没有影响。
相反,第二个代码片段,其中 p.Value显式设置为 4,成功修改 Value 字段。这是因为 运算符取消引用指针,从而允许访问和修改实际指向的值。
作为补充说明,可以通过传递来修改存储在 main() 函数的指针变量中的地址它的地址 (*) 到 f() 函数。然而,与直接使用 p.Value.
修改指向值相比,这种方法效率较低且不方便。以上是为什么Go函数中的指针赋值有时不影响原值?的详细内容。更多信息请关注PHP中文网其他相关文章!