常量计数器
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 时,它就会对从此开始的每一行进行计数,而每一行的每个常量都允许它被自定义,如果你不自定义,那么就默认使用上一行的表达式。