iota + iota

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