Golang | 优雅地定义枚举类型

不失优雅地定义枚举类型

枚举实际上是一种派生地数据类型,我们一般用来定义若干常量的集合。我们最常举的例子就是一周七天这种,它是最典型的使用枚举来定义的。枚举是一种特殊使用的常量,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

猜你喜欢

转载自blog.csdn.net/y943711797/article/details/127303068