变量和常量
标识符
- go的命名推荐使用驼峰命名法,必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母、数字或下划线
- go中根据首字母的大小写来确定可以访问的权限。无论是方法名、常量、变量名还是结构体的名称,如果首字母大写,则可以被其他的包访问;如果首字母小写,则只能在本包中使用
25个关键字
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
37个保留字
内建常量: true false iota nil
内建类型: int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string error
内建函数: make len cap new append copy close delete
complex real imag
panic recover
空标识符 _ 用于省略
变量
变量声明使用 var 关键字,短变量声明中不能使用。 在函数体外声明的变量称之为全局变量。在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。
声明赋值
- 声明并初始化,变量类型可省略(类型自动推断)
var v1 int = 1
var v1 = 1
- 声明,默认初始化为类型的零值(零值初始化机制)
var v1 int
- 短变量声明,不能重复声明,只能在函数内部使用(类型自动推断)
v1 := 1
- 多变量
var v1, v2, v3 int
var v1, v2, v3 = 1, 2, 3
v1, v2, v3 := 1, 2, 3
var (
v1 = 1
v2 int = 2
v3 int
)
赋值
- 赋值,先声明后赋值
v1 = 1
- 多重赋值
i, j = j, i
空白标识符
_ 省略变量
x, _ := foo()
零值初始化机制
- 数值类型变量对应的零值是0
- 布尔类型变量对应的零值是false
- 字符串类型对应的零值是空字符串
- 接口或引用类型(包括slice、map、chan和函数)变量对应的零值是nil
- 数组或结构体等聚合类型对应的零值是每个元素或字段都是对应该类型的零值
常量
常量使用 const 关键字定义
定义常量
- 单个
const n1 = 1
- 多个
const (
a, b = 1, 2
n1 = 1
n2 = 2
)
- 同时声明多个,省略值表示和上面一行的值相同
const (
n1 = 1
n2
)
- iota iota 在每一个 const 关键字出现后就被重置为 0, 每新增一行常量声明将使 iota 加 1, 在下一个 const 出现之前,每出现一次 iota,其所代表的数字会自动加1