Go语言中iota在const块中实现自动递增,可定义枚举值。iota从0开始每行加1,支持起始值调整、跳过值(用_)及位运算组合,如const(Read=1

在Go语言中,常量组结合 iota 可以实现自动递增的常量定义,非常适合定义枚举类型的值。它让代码更简洁、易维护。
基本语法:使用 iota 定义常量组
在 const 块中,iota 从 0 开始,每行自增 1。你可以利用它快速生成一组连续或有规律的常量。
const ( A = iota // 0 B // 1 C // 2 )上面的例子中,A、B、C 的值分别为 0、1、2。只有第一行显式使用了 iota,后面行会隐式延续表达式。
跳过值或设置起始值
如果你想让枚举从 1 开始,可以加 1:
立即学习“go语言免费学习笔记(深入)”;
const ( Red = iota + 1 // 1 Green // 2 Blue // 3 )也可以用下划线跳过某个值:
const ( _ = iota // 跳过 0 First Second Third ) // First=1, Second=2, Third=3配合位运算使用(常见于标志位)
iota 常用于定义位掩码,比如权限或状态标志:
const ( Read = 1这样每个常量对应一个独立的二进制位,便于按位组合使用,如 Read|Write 表示读写权限。
复杂表达式与重置规则
iota 在每个 const 块开始时重置为 0。你可以在表达式中灵活使用:
const ( a = iota * 2 // 0 b // 2 c // 4 )注意:每次换行才递增,同一行多个变量不会让 iota 多次增加。
基本上就这些。iota 看似简单,但结合位运算和表达式后非常强大,是 Go 中定义枚举和标志位的惯用方式。掌握它能让代码更清晰、少出错。










