变量与常量
变量
Go语言中变量的声明语法:
// 显式声明
var myVar string="hello"
// 隐式声明
var myVar = "hello"
// 短声明
myVar := "hello"
显示声明比较直观,短声明更方便。变量在函数体外只能声明,不能赋值。
常量
在Go程序运行期间,常量不会被修改。变量的数据类型只可以是布尔类型、数值类型和字符串类型。常量的声明语法:
// const 常量名 [数据类型] = 常量值
// 显式声明
const author string = "heruos"
// 隐式声明
const author = "heruos"
// 一行内声明多个同类型常量
const a,b = 1,2
// 常量模拟枚举
const (
A = "0"
B = "1"
)
常量中的iota
go语言没有专门的枚举类,我们一般将常量当作枚举类。比如:
const (
atlas = 0
banshee = 1
chroma = 2
equinox = 3
)
fmt.Println(atlas, banshee, chroma, equinox)
在后续更新的时候,可能会增加或删除一些枚举类常量,这时候对常量组进行操作就比较麻烦,需要手写编号。
其实,当我们使用常量作为枚举类的时候,我们只需要常量名不同,常量的值并没有什么意义。因此,就可以使用iota
(常量计数器)简化操作。
示例
const (
atlas = iota
banshee
chroma
equinox
)
fmt.Println(atlas, banshee, chroma, equinox) // 0,1,2,3
常量组的第一个常量被赋值为iota
后,同组内没有表达式的常量从第二个开始,会沿用上一个常量的表达式。第二个常量实际为banshee = iota
iota
初始为0
,一旦使用就会+1
。所以第一个常量为0,第二个常量自动为1,依此类推,就不需要手动维护当作枚举类的常量组。
- 如果需要iota从1开始,可以将空白标识符作为第一个枚举常量
const (
_ = iota
atlas
banshee
)
补充
iota
只能在常量组中使用。- 多个常量组不能共用一个
iota
,一个常量组一个iota
,A常量组的iota
计数不会影响B常量组,B常量组的iota
依旧从0开始。