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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值