golang常量和枚举

golang常量和枚举,第1张

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需要一行行手写,但更加清晰直白。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/995259.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存