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

在Go语言中,指针赋值会影响原始变量,但关键在于你如何使用这个指针。
当你把一个变量的地址赋给指针时,这个指针就指向了该变量的内存位置。之后通过指针修改值,会直接改变原始变量的内容。
例如:
x := 10 p := &x // p 指向 x 的地址 *p = 20 // 通过指针修改值 fmt.Println(x) // 输出 20
这里 *p = 20 实际上修改了 x 所在的内存,所以 x 的值变成了 20。
立即学习“go语言免费学习笔记(深入)”;
当把指针作为参数传递给函数时,函数内部可以通过指针修改原始变量。
示例:
func modify(p *int) {
*p = 100
}
x := 5
modify(&x)
fmt.Println(x) // 输出 100
函数 modify 接收的是 x 的地址,因此对 *p 的赋值直接影响了 x。
如果你只是将一个指针赋值给另一个指针,它们会指向同一个变量,但后续对指针本身的重新指向不会影响原始变量。
比如:
x := 10 p1 := &x p2 := p1 // p2 也指向 x *p2 = 30 // 修改,x 变成 30 p2 = nil // p2 被设为 nil,p1 和 x 不受影响
此时 p2 = nil 只是让 p2 不再指向任何地方,并不会改变 x 或 p1。
基本上就这些:只要是对指针解引用后赋值(即 *ptr = value),就会改原始变量;而只是改变指针的指向,不会影响原始数据。理解这一点,就能准确控制何时影响、何时隔离。
以上就是Golang指针赋值会影响原始变量吗的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号