不失优雅地定义枚举类型
枚举实际上是一种派生地数据类型,我们一般用来定义若干常量的集合。我们最常举的例子就是一周七天这种,它是最典型的使用枚举来定义的。枚举是一种特殊使用的常量,Go语言中定义枚举需要使用const关键字。
一般的枚举方法
在一般的枚举方法中,每一个枚举赋值都不能省略,否则后一个枚举值会于前一个相同。
- 代码示例:
const(
SunDay = 1
MonDay = 2
TueDay = 3
WedDay = 4
ThuDay = 5
FriDay = 6
SatDay = 7
)
从代码看出,我们厌倦了这种有规律且繁琐,并不优雅的代码书写方式,于是,神奇的GO语言开发者们设计了
"iota"关键字。
优雅的定义枚举方法
在优雅的定义枚举方法中,我们需要使用到“iota”关键字。iota的初始值为0,并且会自动增长。
单个的枚举
- 代码示例:
const(
SunDay = iota+1
MonDay
TueDay
WedDay
ThuDay
FriDay
SatDay
)
从代码看出,除了SunDay以外的值都没有显性赋值,他们会惯性的继承SunDay的赋值方式。
多个的定义
iota不仅限于定义单个常量的枚举值,还可以定义多个。
- 代码示例
const(
a,b= (iota+1)*2-1 , (iota+1)*2
c,d
e,f
)
// 我们打印出他们的结果为:1,2,3,4,5,6
我们也可以试图在中途使用等式去改变表达式的值。最好使用打印语句验证自己的分析是否正确。
- 代码示例:
const(
a,b= (iota+1)*2-1 , (iota+1)*2
c,d
e,f
g,h =iota +2,iota+2 //中途使用等式改变其表达式的值
)
fmt.Println(a,b,c,d,e,f,g,h)
// 我们打印出他们的结果为:1,2,3,4,7,8