Golang指针如何修改变量值详解
作者:RiverSoul
时间:2026-01-11
来源:互联网
浏览:0
Go中用&取变量地址得指针,再用*解引用即可修改原值;函数需传指针才能修改外部变量,使用前须防nilpanic。
Go中用&取变量地址得指针,再用*解引用即可修改原值;函数需传指针才能修改外部变量,使用前须防nil panic。

在 Go 语言中,使用指针修改变量值的核心是先取地址,再解引用赋值。只要拿到变量的内存地址(即指针),就能通过 * 操作符访问并修改它指向的原始值。
获取变量地址:用 & 符号
Go 中用 & 获取变量的地址,结果是一个指针类型。这个指针可以传给函数、保存到变量,或直接用于后续操作。
- int 类型变量 x 的地址是
&x,类型为*int - 不能对字面量或表达式取地址,比如
&(x + 1)是非法的 - 局部变量地址可以安全返回,Go 编译器会自动做逃逸分析,必要时分配到堆上
解引用修改值:用 * 操作符
对指针变量使用 * 就是“解引用”,它代表指针所指向的那个变量本身。你可以读取它的值,也可以给它赋新值——这会直接改变原变量。
- 若
p := &x,那么*p = 100等价于x = 100 - 解引用前要确保指针不为 nil,否则运行时 panic
- 可链式使用,如
**pp表示二级指针解引用(较少见但合法)
函数内修改外部变量:传指针最常用
Go 默认按值传递,想让函数影响调用方的变量,必须传入指针。这是指针最典型的用途。
- 函数参数声明为
*int,调用时传&x - 函数内部用
*param = newval即可修改原始变量 - 例如:
func increment(p *int) { *p++ },调用increment(&x)后 x 增加 1
常见误区与注意事项
指针用错容易导致 panic 或逻辑错误,注意几个关键点:
- nil 指针解引用会 panic,使用前建议判空(尤其从 map 或函数返回可能为 nil 的指针时)
- 结构体字段如果是指针,解引用后才能访问其字段,比如
(*p).Name或简写为p.Name(Go 自动解引用) - 切片、map、channel 本身是引用类型,传参时无需取地址;只有需要修改其底层数组头(如扩容后重新赋值)才需传指针
基本上就这些。指针不是 Go 的高频必需品,但在需要修改原值、避免大对象拷贝、或实现某些底层逻辑时非常有用。掌握 & 和 * 的含义与时机,比死记语法更重要。
作者最新文章
微软推出Project Zenith:面向Windows 11开发者的AI硬件加速方案
2026-09-08 18:15
打破流量垄断,让平台经济释放普惠红利
2026-09-08 18:07
Arm AGI CPU详解:136核Neoverse V3,3nm双芯粒架构与AI数据中心部署
2026-09-08 17:18
Windows安装Docker教程:启用WSL2并运行第一个容器验证
2026-09-04 09:26
PDF转Word操作指南:在线与本地转换方法及格式检查
2026-09-03 16:03
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多
Windows 10
Windows
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式
Windows/macOS/Linux
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















