深入浅出Go语言核心编程
上QQ阅读APP看书,第一时间看更新

2.4 编程范例——iota的使用技巧

虽然在2.3节的示例代码中定义周日至周六的枚举值为0~6,但我们更习惯于将周一至周日定义为1~7。那么利用iota该如何实现呢?

要实现该需求,需要跳过iota的初始值0。我们可以利用一个额外常量来占用0,从而实现跳过索引0。但是,这个额外的常量的名称可能又成为一个让人纠结的问题。大家通常都不喜欢无意义的常量名。

Go语言中,可以利用匿名名称“_”来定义变量和常量,这样的变量和常量被称作匿名变量/匿名常量。代码清单2-9演示了利用匿名常量来跳过iota的0值索引。

代码清单2-9 利用匿名常量跳过iota的0值索引

在该代码段中,利用“_ = iota”来将iota的第一个索引值(0)赋予匿名常量,从而使自Monday开始的后续常量的值从1开始。

执行该代码,最终在控制台上的打印效果如下:

    1 2 3 4 5 6 7

在上例中,利用匿名常量跳过了单个值。但是,如果需要跳过多个值,则利用额外变量便不再是好的解决方案。例如,将自2000年开始的10个年份作为常量,该如何处理呢?

其实,我们还可以在常量赋值时增加表达式运算,代码如下:

在该段代码中,我们利用加法运算结合iota来为所有常量赋值,从而实现非0开始的连续值。