Go 语言的命名规则强调简洁性、可读性和一致性,以下是核心规范及实践要点:
一、基础规则
- 可见性控制
- 首字母大小写决定作用域:
- 首字母大写表示导出(public),可被其他包访问(如
UserName
)。 - 首字母小写表示私有(private),仅当前包内可见(如
userName
)。
- 首字母大写表示导出(public),可被其他包访问(如
- 首字母大小写决定作用域:
- 命名组成
- 仅包含字母、数字、下划线,且不以数字开头。
- 避免使用 Go 保留字(如
func
、type
)。
二、具体命名规范
1. 包名(Package)
- 全小写,无下划线或驼峰(如
http
而非httpHandlers
)。 - 简短且有描述性(如
json
替代json_parser
)。
2. 文件名
- 全小写,单词间用下划线分隔(如
http_server.go
)。 - 测试文件以
_test.go
结尾(如user_test.go
)。 - 平台特定文件加后缀(如
file_windows.go
)。
3. 变量与常量
- 变量:驼峰式(如
userName
),布尔变量以Has
/Is
/Can
开头(如isValid
)。 - 常量:全大写,下划线分隔(如
MAX_SIZE
)。
4. 结构体与接口
- 结构体:名词或名词短语,驼峰式(如
UserInfo
)。 - 接口:以
er
结尾的行为描述(如Reader
)。
5. 函数与方法
- 函数名:动词开头,描述功能(如
GetUser()
)。 - 接收器(Receiver):通常用类型首字母简写(如
p *Point
)。
三、特殊场景处理
- 缩写词处理
- 私有变量中缩写词小写(如
dnsServer
),导出时全大写(如DNSServer
)。
- 私有变量中缩写词小写(如
- 错误与测试
- 错误描述小写且无标点结尾(如
invalid input
)。 - 测试函数以
Test
开头(如TestAddUser()
)。
- 错误描述小写且无标点结尾(如
四、工具与风格建议
- 使用
gofmt
自动格式化代码,统一缩进和括号位置。 - 避免冗余命名(如
user.UserName
简化为user.Name
)。
通过遵循上述规则,可确保代码风格统一、易于协作和维护。更多细节可参考官方文档或社区规范(如 Go Code Review Comments )。
五.具体例子
1.大驼峰
例如:StuAge
适用于类、函数、结构体、公开访问
2.小驼峰
例如:stuAge
适用于私有属性、局部变量
3.蛇形
例如:stu_age
适用于mysql字段、前端、json