golang使用const 变量名 变量类型 = 初始化值的形式声明并初始化常量,且常量必须在声明时初始化。和声明变量的区别在于var换成了const且不能省略,同时const a := 10这样混用const和:=的声明方式不被允许。
golang没有其他语言中的enum,而是采用多行const实现。类似如下:
//使用const来定义枚举类型 const ( MON = 1 TUE = 2 WEN = 3 TUR = 4 FRI = 5 SAT = 6 SUN = 7 )
也可以使用iota关键字来简化,每一行相比与上一行iota的值都会默认加1
//在const()中添加一个关键字iota,每行的iota会加1,第一行默认为0 const ( MON = iota TUE WEN TUR FRI SAT SUN )
每一行的值都由iota的值以及该行前面最近的=表达式值决定。例如:
const ( PLAY = iota*iota + 1//0*0+1 WORK //1*1+1 SLEEP //2*2+1 )
多行const加iota能够实现非单位1递增的复杂的枚举或者分段函数,例如:
//iota分段函数
//y = {
// x * x /4, x>=0 && x<=4
// x, x>4
//}
const (
y0 = iota * iota / 4
y1
y2
y3
y4
y5 = iota
y6
y7
)
可见iota可读性稍差,但是能够实现更加复杂的枚举。多行const需要一行行手写,但更加清晰直白。



