用途:为 Go 项目提供统一的开发规范,覆盖命名、错误处理、并发、测试、性能与项目结构,帮助代码评审和日常开发保持一致风格。
主要能力:
- 工具链命令:goimports -w . 格式化并整理 import;go vet ./... 静态分析;golangci-lint run 综合检查;go test -v -race -cover ./... 测试含竞态检测与覆盖率。
- 命名约定:包名小写单词不用下划线(user、orderservice);变量/函数驼峰且缩写词大小写一致(userID、HTTPServer);导出常量用驼峰(MaxRetryCount);单方法接口用方法名+er(Reader、Writer);禁止 common、util、base 等无意义包名。
- import 顺序:标准库、第三方库、项目内部三组,组间空行。
- 错误处理:必须处理错误,用 fmt.Errorf("failed to query user %d: %w", userID, err) 添加上下文,用 %w 保留错误链,用 errors.Is()/errors.As() 检查。
- 并发:优先 channel 通信;启动 goroutine 前考虑谁等待、如何停止;用 context.Context 控制生命周期,配合 select 监听 ctx.Done();用 go test -race 检测数据竞争。
- 测试:推荐表驱动测试,用 t.Run 组织子测试。
- 性能优化:循环拼接字符串用 strings.Builder;预分配 slice 用 make([]T, 0, cap);避免 N+1 查询,批量查询加预加载;限制并发用 semaphore 或 worker pool;Raw SQL 别名避免 year_month、order、status、rank 等 MySQL 保留字;用 go test -cpuprofile=cpu.prof -bench=. 与 go tool pprof cpu.prof 做性能分析。
- 项目结构:cmd/ 放可执行入口,internal/ 放私有代码(handler、service、repository、model),pkg/ 放公共代码,根目录含 go.mod、go.sum。
使用方式:作为开发规范参考,在编写或评审 Go 代码时按上述章节执行;详细内容见 references/go-style.md(命名、错误、并发、测试、性能)与 references/date-time.md(日期加减、账期计算、AddDate 溢出处理)。
适用场景:Go 服务端项目开发、代码评审、新人上手规范统一。
限制:资料未提供安装方式、平台支持、收费信息及具体版本要求,暂未提供。