Skip to content

练习 — pointer

对应文档:docs/phase-01-fundamentals/pointer.md 代码目录:workspace/phase-01/pointer/

Level 1 — 基础

1.1 声明 x int = 10p := &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


学习导航

上一篇:function · 对应知识文档 · 下一篇:method