1. 变量 / 函数(小驼峰)
myName := "Tom"
userAge := 18
getUserInfo()
calculateTotalPrice()
首字母小写,后续单词首字母大写
2.包级别导出(首字母决定可见性)
| 首字母 | 可见范围 | 示例 |
|---|---|---|
| 大写 | 对外暴露(public) | GetUser()、UserName |
| 小写 | 仅包内可用(private) | getUser()、userName |
func GetUser() {} // 别的包可以调用
func getAge() {} // 只能在当前包用
这是 Go 唯一的访问控制方式 ,没有 public/private关键字
3.包名(全小写,短,不用下划线)
package main
package utils
package httpclient // ✅
package http_client // ❌ 不推荐
4.常量(全大写蛇形 或 驼峰 都行)
const MAX_SIZE = 100 // ✅ 常见
const MaxSize = 100 // ✅ 也常见
const defaultTimeout = 30 // ✅ 包内私有
5. 接口(通常以 -er 结尾)
const MAX_SIZE = 100 // ✅ 常见
const MaxSize = 100 // ✅ 也常见
const defaultTimeout = 30 // ✅ 包内私有
6.结构体(大驼峰)
type User struct {
ID int
Name string
age int // 小写字段 → 包外不可访问
}
7.文件名(全小写,下划线可选)
main.go
user_service.go
userService.go // ✅ 也可以
速查表
| 类型 | 规则 | 示例 |
|---|---|---|
| 变量 | 小驼峰 | myVar |
| 函数(私有) | 小驼峰 | getInfo() |
| 函数(导出) | 大驼峰 | GetInfo() |
| 结构体 | 大驼峰 | UserProfile |
| 接口 | 大驼峰,常以 er 结尾 | Reader |
| 包名 | 全小写 | service |
| 常量 | 全大写蛇形 或 大驼峰 | MAX_LEN/ MaxLen |
| 文件名 | 全小写 | longest_palindrome.go |
Go 靠首字母大小写控制一切,小驼峰写内部,大驼峰对外暴露