golang常量和枚举

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值