🧭 为什么要遵守代码规范?
Go语言设计哲学强调简洁、统一、可读。良好的代码风格是专业开发者的“门面”。
🔹 统一代码风格 → 更容易协作 🔹 避免奇技淫巧 → 降低维护成本 🔹 工具自动化支持好(gofmt
, go vet
)
📌 一、缩进与格式化
✅ 使用 Tab 制表符,不是空格!
func main() { fmt.Println("Hello, Go!") }
🔧 强烈建议:使用 gofmt
自动格式化,不需要手动对齐,保持统一。
🧱 二、包结构与导入顺序
✅ 导入顺序应为:
import ( "fmt" // 标准库 "github.com/x" // 第三方包 "myapp/utils" // 本地包 )
🧩 分组之间空一行,整洁有序。
🏷️ 三、变量 & 常量命名规范
类型 | 命名示例 | 说明 |
---|---|---|
包名 | math , net/http | 小写,简洁 |
变量名 | userID , name | 驼峰风格(小写开头) |
常量名 | MaxUsers , Pi | 驼峰或全大写(特殊情况) |
类型名 | User , Config | 首字母大写用于导出 |
函数名 | getUser() , Init() | 驼峰命名 |
🛑 不要用下划线、匈牙利命名,Go 强调简洁美学。
📚 四、注释规范
✅ 函数/类型 注释应以名字开头
// Add 加法函数,返回 a + b 的值 func Add(a, b int) int { return a + b }
📌 遵守 Godoc 风格,写文档时直接可用
🔄 五、错误处理
✅ 不要忽略错误!
f, err := os.Open("file.txt") if err != nil { log.Fatal(err) }
🛑 不要直接用 _
忽略错误,哪怕只是打印出来也好。
🔁 六、空值判断
✅ 使用 len(x) == 0
替代 x == nil
(对 slice/map)
if len(users) == 0 { fmt.Println("没有用户") }
📐 七、控制结构
-
不要加多余的
else
,提倡提前 return
if err != nil { return err } // 正常逻辑
-
不要使用三元运算符(Go 不支持)
🧼 八、代码整洁原则
-
每行最大长度建议不超过 100字符
-
函数不宜过长,保持函数职责单一
-
避免魔法数字,使用具名常量
-
删除无用代码 / 注释
🔧 九、常用工具推荐
工具名 | 用途 |
---|---|
gofmt | 格式化代码 |
go vet | 语义分析检查 |
golint | 风格检查 |
staticcheck | 高级静态分析 |
goimports | 自动补全 import |
🎯 总结
Go语言强调的是:“简洁就是力量”。代码规范不是束缚,而是风格的体现。在 Go 的世界里,风格是统一的,而不是个性的。