Go 中通过指针实现变量名的“间接引用”与原地修改

本文讲解 go 语言中如何通过指针机制,让函数能直接修改调用方的原始变量值,从而模拟"传入变量名并修改其值"的行为,避免值拷贝,并附可运行示例与关键注意事项。 本文讲解 go 语言中如何通过指针机制,让函数能直接修改调用方的原始变量值,从而模拟"传入变量名并修改其值"的行为,避免值拷贝,并附可运行示例与关键注意事项。在 Go 中,无法直接传递"变量名"(即标识符)------这与 Python 的 globals() 或 JavaScript 的 eval 等动态特性不同。Go 是静态编译型语言,不支持运行时符号反射式赋值。但开发者常遇到的实际需求(如切换颜色状态、翻转布尔值、更新配置字段)本质上并非真要"传变量名",而是希望函数能修改调用方作用域中的原始变量内容。这一目标可通过 Go 的指针(pointer)机制安全、高效地实现。指针的核心思想是:传递变量的内存地址,而非其值的副本。函数接收该地址后,即可通过解引用(*p)读写原始位置的数据。以下是一个清晰对应的实现:package mainimport "fmt"const ( yellow = "yellow" black = "black")// changeColor 接收 *string 类型参数,可原地修改原变量func changeColor(color *string) { if *color == yellow { *color = black } else { *color = yellow }}func main() { var varName string = yellow fmt.Println("Before:", varName) // Before: yellow changeColor(&varName) // 传入 varName 的地址 fmt.Println("After: ", varName) // After: black changeColor(&varName) fmt.Println("Again: ", varName) // Again: yellow}? 关键点说明: Zeemo AI 一款专业的视频字幕制作和视频处理工具

相关推荐
爱写代码的阿森33 分钟前
鸿蒙三方库 | harmony-utils之KvUtil键值型数据库操作详解
数据库·华为·harmonyos·鸿蒙·huawei
Database_Cool_1 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
玉鸯1 小时前
Agent Hook:在概率推理之上,为 Agent 叠加确定性控制
python·langchain·agent
姜太小白2 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql
weixin_446260852 小时前
HACO:面向动态部署环境的对冲式智能计算可靠多智能体调度框架
后端·python·flask
窝子面2 小时前
手搓最简前后端协作-node
javascript·数据库
我的xiaodoujiao2 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
吳所畏惧2 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈2 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习