Go
规则 01 和规则 03 依然有效。此技能是这些规则在生产环境中以 Go 特有的方式失效时的应对指南。
当修改涉及错误处理、goroutine、[]byte 与 string 的选择、递归或对非自身创建的数据进行 switch 时,请阅读 references/bad-vs-good.md。对结果运行 gofmt。不要为了满足此技能而添加日志库。
完成条件
- 每次调用的返回错误都必须被返回、带上下文包装或处理。不丢弃任何错误。
- 一个 goroutine 不会修改另一个 goroutine 同时修改的值。goroutine 的数量必须有限。
- 对于不受信任或大型输入,不得使用无界递归进行遍历。