内容目录
| 代码元素 | 命名约定 | 示例 | 说明 |
|---|---|---|---|
| Go文件 | 小写, 使用下划线 | http_server.go |
Go文件通常是小写的,单词之间使用下划线分隔。 |
| 函数 | 驼峰式,首字母大写公开 | ComputeSomething()findIndex() |
导出的函数首字母大写,私有函数首字母小写。 |
| 方法 | 同函数 | user.MarshalJSON()client.doRequest() |
方法命名同函数,首字母大小写决定其可见性。 |
| 常量 | 大写下划线或驼峰式 | MAX_TIMEOUTDefaultPort |
导出的常量首字母大写,私有常量使用小写。 |
| 变量 | 驼峰式或简短 | indexnumItemsuserID |
变量命名根据其可见性使用大小写,短命名用于局部变量。 |
| 接口 | 通常以er结尾 |
ReaderWriter |
接口命名反映行为,导出的接口首字母大写。 |
| 类型 | 驼峰式 | ByteSliceJobQueue |
自定义类型采用驼峰式,首字母大写表示导出类型。 |
| 包名 | 小写, 无下划线或驼峰 | nethttp |
包名应简短且为小写,不使用下划线或驼峰式。 |
| 错误变量 | err开头 |
errNotFounderrInvalidInput |
错误变量通常以err开头且后接描述。 |
| 接收器变量 | 类型名称首字母的小写 | func (u *User) Name() string |
方法的接收器变量名通常简短,代表其类型。 |
| 通道 | 以ch开头或含Queue |
chDonejobsQueue |
通道变量通常明确指出其为通道类型。 |
| 全局变量 | 驼峰式,首字母大写公开 | Logger |
全局变量采用首字母大写,代表可导出。 |
| 临时变量 | 简短命名 | i, j, tmp, buf |
临时变量使用较短的名称,通常用于局部作用域。 |
| 测试文件 | _test.go后缀 |
http_server_test.go |
测试文件以被测试的文件名开头,添加_test.go后缀。 |
| 工程名 | 小写, 可包含短横线 | go-webservermy_app |
Go工程名应该简洁,能够清楚地反映项目内容或功能。可以包含短横线来分隔单词。 |
工程名称通常与代码仓库名称一致
逐步学习Go-命名约定