Go
规则 01 和规则 03 仍为基石。本技能以 Go 语言特有的方式展示了这些规则在生产中失效的情形。
当修改涉及错误、goroutine、[]byte 与 string 的选择、递归,或对非你创建的数据进行 switch 时,请阅读 references/bad-vs-good.md。对结果运行 gofmt。不要为了满足本技能而添加日志库。
完成条件
- 每次调用产生的错误都被返回、附带上下文包装或已处理,无一被丢弃。
- 一个 goroutine 不会修改另一个 goroutine 正在修改的值。goroutine 的数量是受限的。
- 不受信任或大型输入不会通过不受限递归进行遍历。