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需要一行行手写,但更加清晰直白。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)