Go 错误处理确认
包装错误时,为什么不用 %v 而要使用 %w?
- 字符更少,代码更简洁
- 格式化成本更低
- 可以保留原始错误,供后续判断
- 输出的字符串更易读
如果既记录错误日志,又返回该错误,会怎样?
- 记录两次会更安全
- 同一个故障会在日志中重复出现
- 日志 I/O 会导致性能下降
- vet 会检测到并阻止编译
在 Go 中,哪种情况适合使用 panic?
- 用户输入错误时
- 初始化失败或不变量被破坏时
- 发生网络错误时
- 文件不存在时
将结构体编码为 JSON 时,如果没有添加字段标签,会怎样?
- 编码时返回错误
- 该字段不会出现在 JSON 中
- 字段名会转换为小写
- Go 字段名会保持原有大写形式输出
检查 goroutine 泄漏最简单的方法是什么?
- 比较测试前后的 goroutine 数量
- 观察进程的内存用量
- 检查 CPU 使用率是否上升
- 使用
go vet进行静态分析
为什么 Go 中几乎不存在代码格式争论?
- 因为 gofmt 的输出就是标准答案
- 因为 linter 连代码风格也会强制执行
- 因为没有标准风格指南
- 因为 IDE 会自动处理