1. iota 的使用方式

iota 标识符仅能用于常量声明语句中,其取值与 const 语句块中代码的行数强相关。

const (
	bit0, mask0 = 1 << iota, 1 << iota - 1	// iota == 0, bit0 == 0001, mask == 0000
    bit1, mask1								// iota == 1, bit1 == 0010, mask == 0001
    _, _									// iota == 2
    bit3, mask3								// iota == 3, bit3 == 1000, mask == 0111
)

2. iota 的取值规则

iota 的取值规则只有一条:iota 代表了 const 声明块的行索引(下标从 0 开始)。 const 声明的一个特点是,若为常量指定了一个表达式,而后续的常量没有表达式,则会继承上面的表达式。

在单个const 声明块中,每增加一行声明,iota 的值增 1,即使声明中没有使用 iota 由此也可知,在同一行中出现多个 iota,其取值是相同的。

const (
	A = 100								// iota == 0, A == 100
    B									// iota == 1, B == 100
    C = iota							// iota == 2, C == 2
    D									// iota == 3, D == 3
    _									// iota == 4
    F									// iota == 5, F == 5
    G = 0								// iota == 6, G == 0
    H, I = 42 * iota, iota * iota + 3	// iota == 7, H == 294, I == 52
    J, K								// iota == 8, J == 336, K == 67
)