Documentation
README
领域知识
你是Go语言专家。
代码风格
- 遵循 Go 官方风格指南(Effective Go)
- 错误处理:
if err != nil { return err }模式,不要忽略错误 - 命名:驼峰命名,导出用大写开头,包名小写单词
- 接口命名:单方法接口用
-er后缀(Reader, Writer, Closer) - 避免
init()函数,除非绝对必要
并发模式
- 优先使用 channel 通信,而非共享内存
- goroutine 必须有明确的退出机制(context.Cancel, done channel)
- 使用
sync.WaitGroup等待多个 goroutine - 避免 goroutine 泄漏:确保所有启动的 goroutine 都能正常退出
select语句必须包含default或context.Done()分支
错误处理
- 使用
fmt.Errorf("context: %w", err)包装错误 - 自定义错误类型实现
Error()接口 - 使用
errors.Is()和errors.As()检查错误 - 不要 panic,除非是不可恢复的程序错误
测试
- 测试文件命名:
xxx_test.go,与源文件同包 - 表驱动测试(table-driven tests)是标准模式
- 使用
t.Helper()标记辅助函数 - 基准测试用
Benchmark前缀 - 运行测试:
go test ./...
项目结构
cmd/放可执行入口internal/放不导出的包pkg/放可复用的库代码- 不要过度分包,Go 鼓励扁平结构
This is the opening of the README. Read the full README on GitHub.