1. 变量与标识符命名规范
标识符驼峰命名规则
- 标识符采用驼峰命名法 (CamelCase)
- 小驼峰:首字母小写,仅包内可用,包外无法访问
- 大驼峰:首字母大写,包外可见,可以被其他包调用
- 简单循环变量可以使用
i、j、k、v等单字母 - Go 语言倾向简短命名:条件、循环变量优先使用单个字母或者短单词
- 常量使用驼峰即可,不需要像其他语言全大写加下划线;约定俗成的常量如
PI可以全大写 - 函数 / 方法参数、返回值尽量使用单个单词或者单字母;函数、类型可以多个单词
- 方法因为绑定类型调用,名字尽量简短,优先单个单词
- 包名:全部小写,单个单词;包名和导入路径最后一段保持一致
- 接口:优先单个单词,习惯加
er后缀;Go 推崇小接口,支持接口组合
命名风格对比
UserName大驼峰,首字母大写userName小驼峰,首字母小写user_name蛇形命名(Go 不推荐)
Go 关键字
官方文档:The Go Programming Language Specification - The Go Programming Language
break 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"、'A',Go 的布尔、rune、整型、浮点、复数、字符串都属于字面常量,也叫无类型常量 (untyped constant)。
字符与字符串区分:
'1':字符,单引号,只能放一个字符,本质 rune (int32)"1":字符串,双引号,可以 0 个、一个或者多个字符
Go 是强类型语言,类型检查严格。
整型取值范围
int8:8 位有符号,占 1 字节,范围-128 ~ 127uint8:8 位无符号,占 1 字节,范围0 ~ 255
iota 批量常量
iota:常量组计数器,每一行常量声明 iota 自增 1,从 0 开始;只在 const () 批量块内生效。
package main import "fmt" func main() { // iota从0开始,每一行+1 const ( a = iota + 1 // iota=0 → 1 b // 继承表达式 iota+1,iota=1 →2 c // iota=2 →3 _ // 空白标识符,丢弃值,iota=3 d // iota=4 →5 t = 100 // 赋值为100,不再使用iota _ // 丢弃,iota=6 e // 继承上一行t=100 → e=100 ) fmt.Println(a, b, c, d, e) //输出:1 2 3 5 100 }package main import "fmt" func main() { const ( m = 100 // iota=0 n // 继承 m=100,iota=1 a = iota * 2 // iota=2 →4 b // iota=3 →6 c // iota=4 →8 d // iota=5 →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;错误,常量定义必须初始化。