Go 语言开发规范与最佳实践
引言
为了提升代码的可维护性与安全性,统一团队的编码风格至关重要。本文档总结了 Go 语言开发中的核心规范,涵盖代码风格、注释、命名、控制结构及依赖管理等方面。每条规范都标注了建议等级:
- 必须(Mandatory):强制执行;
- 推荐(Preferable):强烈建议遵循,特殊情况除外;
- 可选(Optional):参考即可。
代码风格
格式化
所有代码必须使用 gofmt 进行格式化,确保格式与官方推荐保持一致。这是底线要求,无需额外配置。
换行与空格
建议单行代码不超过 120 列,超长时合理换行。运算符和操作数之间应保留空格,但在作为输入参数或数组下标时,为保持紧凑可省略空格。括号逻辑严格遵循 gofmt。
Import 规范
推荐使用 goimports 自动处理包引入,它会自动排序并按组管理依赖(标准库、内部包、第三方包)。
- 禁止使用相对路径引入包。
- 包名应与 Git 路径一致,若不一致请使用别名。
- 匿名包引用建议使用独立分组并添加注释说明。
import (
// standard package & inner package
"encoding/json"
"myproject/models"
// third-party package
"github.com/opentracing/opentracing-go"
// anonymous import
_ "github.com/user/storage/filesystem"
)
错误处理
error 作为返回值时,必须进行处理或显式忽略。当存在多个返回值时,error 必须是最后一个参数。
// 正确示例
func do() (int, error) { }
// 错误示例
func do() (error, int) { }
错误描述末尾不需要标点。建议采用独立的错误流处理,避免嵌套过深:
if err != nil {
return err
}
// 正常业务逻辑

