# iota
iota 是 go 语言的常量计数器,只能在常量的表达式中使用。 iota 在 const 关键字出现时将被重置为 0 。 const 中每新增一行常量声明将使 iota 计数一次 ( iota 可理解为 const 语句块中的行索引)。 使用 iota 能简化定义,在定义枚举时很有用。
举个例子:
const ( | |
n1 = iota //0 | |
n2 //1 | |
n3 //2 | |
n4 //3 | |
) |
# 1.2.2. 几个常见的 iota 示例:
使用_跳过某些值
const ( | |
n1 = iota //0 | |
n2 //1 | |
_ | |
n4 //3 | |
) |
iota 声明中间插队
const ( | |
n1 = iota //0 | |
n2 = 100 //100 | |
n3 = iota //2 | |
n4 //3 | |
) | |
const n5 = iota //0 |
定义数量级 (这里的 << 表示左移操作, 1<<10 表示将 1 的二进制表示向左移 10 位,也就是由 1 变成了 10000000000 ,也就是十进制的 1024 。同理 2<<2 表示将 2 的二进制表示向左移 2 位,也就是由 10 变成了 1000 ,也就是十进制的 8 。)
// 左移 n 位就是 乘以 2 的 n 次方 | |
// 右移 n 位就是 除以 2 的你次方 | |
const ( | |
_ = iota | |
KB = 1 << (10 * iota) | |
MB = 1 << (10 * iota) | |
GB = 1 << (10 * iota) | |
TB = 1 << (10 * iota) | |
PB = 1 << (10 * iota) | |
) |
多个 iota 定义在一行
const ( | |
a, b = iota + 1, iota + 2 //1,2 | |
c, d //2,3 | |
e, f //3,4 | |
) |