当前位置: 首页 > news >正文

# Go 语言指针零基础入门详解

文章目录

  • Go 语言指针零基础入门详解
  • 一、指针到底是什么?
  • 二、指针的两个核心符号(记牢就成功一半)
  • 三、第一步:取地址(\&)
  • 四、第二步:解引用取值(\*)
  • 五、nil 空指针
  • 六、Go 指针的安全限制
  • 七、指针与函数(最常用场景)
  • 八、本篇总结

Go 语言指针零基础入门详解

大家好~前面我们已经学了变量、函数、流程控制,今天正式进入Go 指针的世界!
很多新手觉得指针难,但其实指针就是内存的门牌号,超级直观、超级简单。

带你彻底搞懂:指针是什么、怎么取地址、怎么解引用、nil 指针、Go 指针安全限制。

适合:零基础、刚学 Go、怕指针、想彻底搞懂内存的同学。


一、指针到底是什么?

指针 = 内存地址

你可以把内存想象成一长排宿舍:

  • 每一间宿舍 = 一块内存

  • 房间号 =内存地址

  • 房间里住的人 =变量的值

指针 = 存 “房间号” 的变量

特点:

  • 指针本质是一个大整数

  • Go 给它单独定义了指针类型\*T

  • 不同类型指针不能混用(\*int ≠ \*string


二、指针的两个核心符号(记牢就成功一半)

Go 语言指针只有两个符号:

  1. & 取地址符→ 拿到变量的内存地址

  2. * 解引用符→ 通过地址访问变量的值

口诀:

&拿地址, *拿内容


三、第一步:取地址(&)

packagemainimport"fmt"funcmain(){a:=10ptr:=&a// 取 a 的地址fmt.Printf("a 的值:%d\n",a)fmt.Printf("a 的地址:%p\n",&a)fmt.Printf("ptr 存储的地址:%p\n",ptr)fmt.Printf("ptr 的类型:%T\n",ptr)}

运行结果:

a 的值:10 a 的地址:0xc0000a0080 ptr 存储的地址:0xc0000a0080 ptr 的类型:*int

结论:
ptr = \&a→ ptr 就是 a 的地址。


四、第二步:解引用取值(*)

通过指针访问 / 修改变量:

funcmain(){a:=10ptr:=&a fmt.Println(*ptr)// 输出 10*ptr=999// 通过指针修改 afmt.Println(a)// a 变成 999}

核心理解:
\*ptr** 就是变量 a 本身**
修改\*ptr= 直接修改变量 a 的值。


五、nil 空指针

未初始化的指针 =nil(空)。

varptr*intfmt.Println(ptr)// <nil>

⚠️禁止对 nil 解引用,会直接崩溃。

// 错误varptr*int*ptr=100// panic

六、Go 指针的安全限制

Go 为了安全,对指针做了严格限制:

  1. 不支持指针算术运算
    ptr\+\+ptr\+1都不行

  2. 不同类型指针不能混用
    \*int不能转\*string

  3. 类型必须严格匹配
    \*int只能指向int变量


七、指针与函数(最常用场景)

Go 默认值传递,要修改外部变量必须传指针。

funcchange(num*int){*num=999}funcmain(){a:=10change(&a)fmt.Println(a)// 999}

八、本篇总结

  1. 指针 = 内存地址

  2. \&amp;变量→ 取地址

  3. \*指针→ 取值 / 修改

  4. 指针类型:\*int\*string\*bool

  5. 未初始化指针 =nil

  6. Go 指针安全,不支持运算

  7. 函数要修改外部变量 → 传指针


如果你也在零基础学 Go,欢迎关注我!
我会持续更新:
✅ Go 基础语法
✅ 指针详解
✅ 数据结构
✅ 顺序表 / 链表 / 栈 / 队列

下一篇:线性表基本原理 + 顺序表 + 链表
👉 点赞 + 收藏 + 关注,更新第一时间不迷路!


(注:文档部分内容可能由 AI 生成)

http://www.jsqmd.com/news/736357/

相关文章:

  • 3D智能体指令驱动与跨场景泛化技术解析
  • CSS如何控制多列布局的间距_通过column-gap设置css间隔
  • 本地优先AI知识库pm-pilot:一体化项目管理与智能笔记实践
  • 3步解锁iOS激活锁:applera1n开源工具深度解析与技术实战
  • VIOLA框架:低标注成本的视频上下文学习技术
  • 【LLM推理优化与部署工程⑦】买了8张GPU却只有3倍速度?钱都被这个东西吃掉了
  • 为什么92%的Laravel项目在AI集成后Q3运维成本翻倍?——Laravel Octane+Vector DB冷热分离计费策略全公开
  • 日志告警不再“狼来了”:用MCP 2026的语义理解引擎实现9类异常模式自动聚类(实测FP率降至0.8%)
  • Steam Achievement Manager:轻松管理Steam成就的终极解决方案
  • Grace与Ansys结合:高性能计算在汽车仿真中的突破
  • 【2026 年我 AI 编程最常用的 18 个提示词|从 Vibe Coding 到 Agentic Engineering 全覆盖】
  • 等保测评专家亲述:Docker 27容器镜像层签名失效=直接否决!金融级可信供应链构建的5个不可绕过的CA签发实践
  • CommandKenobi:一套跨AI编程助手的标准化工作流命令集
  • 避坑指南:YOLOv8+ByteTrack部署时,为什么你的目标ID总跳变?
  • PHP+AI不再“胶水式”开发(Laravel 12.1+专属方案):用自研AiPipeline组件替代硬编码调用,交付效率提升3.7倍(含Benchmark报告)
  • n8n-nodes-puppeteer实战指南:从零构建专业级浏览器自动化工作流
  • 别再为重复基因名头疼了!R语言处理RNA-seq表达矩阵的两种实战方法(附完整代码)
  • 深度解析Windows系统权限管理:RunAsTI高级权限控制实战指南
  • 如何深度探索机器人仿真:从零到实战的完整路径 [特殊字符]
  • 【国家级AI治理标准对标】:用R构建可解释偏见热力图——覆盖BERT、Llama3、Qwen3共12类主流模型的标准化检测流水线
  • 终极指南:如何用WeChatMsg永久保存微信聊天记录
  • 非洲跨境电商:被忽视的蓝海市场
  • 深度学习在游戏AI动作识别中的应用与实践
  • AI 时代程序员必备技能树,2026 不要再学过时技术
  • 2026成都隔油池清掏厂家TOP3推荐:商场化粪池清掏/商场隔油池清掏/地下室化粪池清掏公司/学校化粪池清掏/小区化粪池清理/选择指南 - 优质品牌商家
  • Swoole+LLM长连接稳定性压测报告(2026.03权威实测):12小时不重启、1000+并发会话零断连、自动心跳熔断策略详解
  • R中bias_metrics()函数为何被Meta、Anthropic联合封禁?深度解密未公开的fairness::audit_model()底层统计协议
  • 基于vue的健身管理计划平台[vue]-计算机毕业设计源码+LW文档
  • 集运模式正在重塑跨境物流,你了解多少
  • Win10下用Anaconda3为老项目复活PyTorch 0.4.1 GPU环境(CUDA 9.2 + Python 3.6 保姆级避坑指南)