iota - Go中优雅的常量

常量计数器

iota 其实可以对标 C++ 中的枚举,但显然 iota 比枚举更加优雅且更加友好。

iota 是一个常量计数器,(注意它的对象必须是个常量),当你给一个常量赋值为 iota 时,从当前行开始,随着逐行往下,iota也会逐渐 +1 。

举个例子

const (
    v1 = iota
    v2
    v3
    ...
)

上面代码的结果是 v1 = 0, v2 = 1, v3 = 2

支持表达式

iota支持表达式,比如我在赋值的时候给的是 v1 = 11 * iota
那么 v1 = 0, v2 = 11, v3 = 22,以此类推

支持跳过

iota支持跳过某一个值,你只需要在这一行的常量写为 _ 即可。

支持自定义和重新定义

以代码为例子

const (
    v1 = iota // v1 = 0
    v2  // v2 = 1
    v3 = 7 // v3 = 7
    v4 = iota // v4 = 3
    v5 = 111 * iota // v5 = 444
    ...
)

总结

其实iota的特性可以用一句话来总结

const 中第一次被赋值 iota 时,它就会对从此开始的每一行进行计数,而每一行的每个常量都允许它被自定义,如果你不自定义,那么就默认使用上一行的表达式。