Go语言精进之路读书笔记第10条——使用iota实现枚举常量
Go的const语法提供了隐式重复前一个非空表达式的机制
const (
Apple, Banan = 11, 22
Straberry, Grape
Pear, Watermelon
)
// 等价于
const (
Apple, Banan = 11, 22
Straberry, Grape = 11, 22
Pear, Watermelon = 11, 22
)
iota是Go语言的一个预定义标识符,表示const声明块(包括单行声明)中每个常量所处位置在块中的偏移量(从零开始)
- iota自身也是一个无类型常量,可以像无类型常量那样自动参与不同类型的求值过程,而无须对其进行显式类型转换操作
- 位于同一行的iota即便出现多次,其值也是一样的
- 使用"_"略过iota=0,或实现非连续枚举值
- 定义浮点型的枚举常量
const (
_ = iota // 0
Pin1
Pin2
Pin3
_
Pin5 // 5
)
const (
PI = 3.1415926 // 派
PI_2 = 3.1415926 / (2 * iota) // 派/2
PI_4 // 派/4
)