Golang的常量表达式值在编译期计算,iota是Golang提供的常量生成器,用于生成一组以相似规则初始化的常量。一个例子:
const (
Zero = iota // 0
First // 1
Second // 2
Hi = 0 // 0, 被打断后,后续值不变,直到用iota显示恢复
Four // 0
Five // 0
Six = iota // 6,显示恢复,iota接着累加,中间打断不中断累加
Seven // 7
Eight = iota * 10 // 80,iota不变,变更常量表达式,后续保持表达式
Nine // 90
)
const (
TenZero = iota * 10 // 0,表达式可以为各种go支持的计算表达式
TenFirst // 10
TenSecond // 20
)
Golang这个iota常量生产器特性非常有用,尤其是枚举一些按一定规则自增的常量,而C/C++中枚举常量只能做到按1累加。