iota 是 Go 中从 0 开始、在 const 块中自动递增的特殊常量生成器;iota + iota 等价于 2 * iota,生成偶数序列 0, 2, 4…,但因可读性差且易误解,不推荐使用。

在 Go 语言中,iota 是一个特殊常量生成器,用于简化枚举值的定义。但 iota + iota 并不是一个常见或推荐的写法,它在语义上等价于 2 * iota,且只在常量块中有效。
什么是 iota
iota 从 0 开始,在每个 const 声明块中自动递增。每出现一次新的常量声明(即换行或新 const 行),iota 加 1。
iota + iota 的实际效果
在同一行中写 iota + iota,相当于把当前 iota 值乘以 2:
- 第 0 个常量:
iota是 0 →iota + iota= 0 - 第 1 个常量:
iota是 1 →iota + iota= 2 - 第 2 个常量:
iota是 2 →iota + iota= 4 - 依此类推,得到的是偶数序列:0, 2, 4, 6, …
为什么不建议直接写 iota + iota
这种写法可读性差,容易让人误以为是两个独立的 iota 实例(其实不是)。Go 中 iota 是一个值,不是变量,不能“调用”或“重复取值”。更清晰的写法是:
- 用
2 * iota明确表达意图 - 或直接用具名常量(如
FlagRead = 1 )配合位移,这是更常见的模式
正确示例
想定义一组翻倍的常量,推荐这样写:
const ( A = 1










