1. 变量与标识符命名规范标识符驼峰命名规则标识符采用驼峰命名法 (CamelCase)小驼峰首字母小写仅包内可用包外无法访问大驼峰首字母大写包外可见可以被其他包调用简单循环变量可以使用i、j、k、v等单字母Go 语言倾向简短命名条件、循环变量优先使用单个字母或者短单词常量使用驼峰即可不需要像其他语言全大写加下划线约定俗成的常量如PI可以全大写函数 / 方法参数、返回值尽量使用单个单词或者单字母函数、类型可以多个单词方法因为绑定类型调用名字尽量简短优先单个单词包名全部小写单个单词包名和导入路径最后一段保持一致接口优先单个单词习惯加er后缀Go 推崇小接口支持接口组合命名风格对比UserName大驼峰首字母大写userName小驼峰首字母小写user_name蛇形命名Go 不推荐Go 关键字官方文档The Go Programming Language Specification - The Go Programming Languagebreak default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var预定义标识符语言内置官方文档The Go Programming Language Specification - The Go Programming Language// 内置类型 any bool byte comparable complex64 complex128 error float32 float64 int int8 int16 int32 int64 rune string uint uint8 uint16 uint32 uint64 uintptr // 内置常量 true false iota // 零值标识 nil // 用于指针、切片、map、channel等引用类型 // 内置函数不要随意覆盖重定义 append cap close complex copy delete imag len make new panic print println real recover识符概念标识符给值起的名字源代码中用来指代数据编译之后标识符消失全部替换成内存地址。变量标识符指代的值可以修改。关键字var常量标识符定义时值就固定不可修改。关键字const定义时必须赋初值字面常量就是原始的值本身不是变量名。例如100、hello、AGo 的布尔、rune、整型、浮点、复数、字符串都属于字面常量也叫无类型常量 (untyped constant)。字符与字符串区分1字符单引号只能放一个字符本质 rune (int32)1字符串双引号可以 0 个、一个或者多个字符Go 是强类型语言类型检查严格。整型取值范围int88 位有符号占 1 字节范围-128 ~ 127uint88 位无符号占 1 字节范围0 ~ 255iota 批量常量iota常量组计数器每一行常量声明 iota 自增 1从 0 开始只在 const () 批量块内生效。package main import fmt func main() { // iota从0开始每一行1 const ( a iota 1 // iota0 → 1 b // 继承表达式 iota1iota1 →2 c // iota2 →3 _ // 空白标识符丢弃值iota3 d // iota4 →5 t 100 // 赋值为100不再使用iota _ // 丢弃iota6 e // 继承上一行t100 → e100 ) fmt.Println(a, b, c, d, e) //输出1 2 3 5 100 }package main import fmt func main() { const ( m 100 // iota0 n // 继承 m100iota1 a iota * 2 // iota2 →4 b // iota3 →6 c // iota4 →8 d // iota5 →10 ) fmt.Println(m, n, a, b, c, d) //输出100 100 4 6 8 10 }⚠️重要注意const常量的值编译期必须完全确定只能使用字面常量。❌ Go 不支持const c [2]int{1,2}数组内容运行期可变编译期无法确定不能作为常量。❌const a;错误常量定义必须初始化。