该资料是一份 Go 惯用模式与最佳实践指南,适用于编写新 Go 代码、评审 Go 代码、重构既有代码以及设计 Go 包或模块。
核心原则:偏好简单与清晰;让零值可直接使用;函数接受接口参数、返回具体类型。
错误处理:用 fmt.Errorf 与 %w 包装上下文;定义自定义错误类型与哨兵错误;用 errors.Is 和 errors.As 判断;不要忽略错误。
并发模式:worker pool、用 context 做取消与超时、优雅关闭、errgroup 协调 goroutine,以及避免 goroutine 泄漏(使用带缓冲 channel 加 select)。
接口设计:定义小而专注的接口,在使用方包中定义,借助类型断言支持可选行为。
包组织:给出含 cmd、internal、pkg、api、testdata 的标准布局;包名短小写、无下划线;避免包级可变状态,改用依赖注入。
结构体设计:函数式选项模式、用嵌入做组合。
内存与性能:已知大小时预分配切片、频繁分配用 sync.Pool、循环中避免字符串拼接,优先 strings.Builder 或 strings.Join。
工具链:go build、go test、go test -race、go test -cover、go vet、staticcheck、golangci-lint、go mod tidy、go mod verify、gofmt、goimports,并给出 .golangci.yml 推荐配置片段。
还包含惯用法速查与反模式(长函数裸返回、用 panic 控制流程、在结构体中传 context、混用值/指针接收者)。
安装方式、授权与收费信息暂未提供。