外观
练习 — pointer
对应文档:
docs/phase-01-fundamentals/pointer.md代码目录:workspace/phase-01/pointer/
Level 1 — 基础
1.1 声明 x int = 10,p := &x,通过 *p 修改为 20,打印 x。
1.2 解释 *T(类型)与 *p(解引用)的区别。
1.3 nil 指针判断:var p *int,安全打印(不 panic)。
Level 2 — 应用
2.1 updateSpeed(a *AGV, speed float64) 修改原 struct,对比值传递版本。
2.2 new(AGV) 创建指针,与 &AGV{} 对比。
2.3 map[string]*AGV 注册设备,通过 map 修改 Speed。
Level 3 — 综合
3.1 函数返回 *AGV 指针,main 中修改返回的对象。
3.2 找出值传递导致修改失败的 bug 并修复(给一段有 bug 代码)。
Level 4 — 项目实践
4.1 registry.go:DeviceRegistry 内部 map[string]*AGV,Register/Get/UpdatePosition 全用指针,go run . 演示跨函数修改同一 AGV。
学习检查
- [ ] 何时必须用指针?
- [ ] nil 解引用后果?
提交:检查答案 — pointer 练习 X.X