首页 >后端开发 >Golang >为什么在 Go 中取消引用指针不会更新原始结构?

为什么在 Go 中取消引用指针不会更新原始结构?

Linda Hamilton
Linda Hamilton原创
2024-12-01 00:26:10867浏览

Why Doesn't Dereferencing a Pointer in Go Update the Original Struct?

Go 中的指针解引用

在 Go 中,指针解引用涉及访问存储在指针指向的内存地址中的值变量。

问题:

在 Go 教程提供的示例中,未发生指针取消引用的预期行为。当指针变量用于更改结构体的值时,更改不会传播到结构体的取消引用副本。

说明:

t := * q 操作创建 q 指向的结构的副本。随后对 q 所做的任何更改都不会影响 t。这种行为是预料之中的,因为 Go 将指针视为值,而赋值是复制操作。

要观察 t 中通过 q 所做的更改,有必要维护指向结构的指针,而不是复制值。这可以通过将 q 赋值给 t 来实现:

t := q

C/C 比较:

Go 中的指针解引用行为与 C/ 中的类似C.在这两种语言中,指针存储值的地址,并且取消引用它们可以提供对实际值的访问。然而,在 Go 中,对指针的赋值会导致复制值,而在 C/C 中,它们会直接修改引用的值。

以上是为什么在 Go 中取消引用指针不会更新原始结构?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn