命名强制规则(语言语法)
- 首字符:名称必须以字母开头(不能以数字开头,如
2stack非法)。 - 后续字符:可以包含任意数量的附加字母和数字(如
length、stack2合法)。 - 可见性(导出规则):
- 大写开头(如
Println、RedHeat):被认为是导出的(公开),可以从其他包访问。 - 小写开头(如
redHeat):被认为是未导出的(私有),只能在当前程序包内使用。 - 示例:
sales.Total可跨包访问,而sales.total不可跨包访问。
- 大写开头(如
命名约定(社区惯例)
- 驼峰命名法(CamelCase):多单词名称,首个单词小写,后续单词首字母大写,直接连接(如
sheetLength、TotalUnits、topPrice)。 - 避免下划线:
Total_Units虽语法合法,但不符合 Go 直接连接的惯例。 - 缩写惯例:上下文明确时倾向缩写(如用
i代替index,max代替maximum)。
代码演示与解析
package main
import "fmt"
func main() {
var statu2 = 2 // 合法:字母开头,含数字
// var 2statu = 2 // 非法:数字开头(编译报错)
// var sta.ddd = 4 // 非法:包含非法字符(仅字母数字)
var redHeat = 3 // 小写开头:包内私有(未导出)
fmt.Println(statu2, redHeat) // 输出: 2 3
var RedHeat = 3 // 大写开头:可导出(公开),与 redHeat 是不同的变量
fmt.Println(statu2, redHeat, RedHeat) // 输出: 2 3 3
}Code language: JavaScript (javascript)
要点:fmt.Println 本身因大写 P 得以从 fmt 包导出供我们使用;同作用域内 redHeat 与 RedHeat 因大小写不同被视为两个独立变量。
小结
| 维度 | 规则/约定 | 示例 | 关联历史知识 |
|---|---|---|---|
| 基础语法 | 字母开头,可带数字 | statu2 (OK), 2statu (No) | 变量声明(前节) |
| 可见性 | 大写导出,小写私有 | RedHeat (公开), redHeat (私有) | 包与导入(如 fmt.Println) |
| 风格约定 | 驼峰命名,无下划线 | sheetLength (OK), sheet_length (不推荐) | 多单词命名 |
| 缩写 | 倾向简短缩写 | i 代替 index | 代码简洁性 |
强制规则(首字母、可见性)是编译器严格检查的;驼峰命名是社区惯例,不遵守虽能运行但影响代码可读性。结合前节“短变量声明”,日常开发中常以 name := "value" 配合驼峰命名完成局部变量定义。