golang中的iota
iota是golang语言的常量计数器,只能在常量的表达式中使用。
特性:
- iota只能在常量的表达式中使用
- 每次const出现时,都会让iota初始化为0【自增长】
const a = iota const ( b = iota // b=0 c // c=1 )
- 自定义类型
自增长常量经常包含一个自定义枚举类型,允许你依靠编译器完成自增设置。type week int const ( Mon week = iota // 0 Tue // 1 Wed // 2 Thu // 3 )
- 可跳过的值
我们可以使用下划线跳过不想要的值。const ( OutMode int = iota // 0 OutMono // 1 OutStereo // 2 _ _ OutSurround // 5 )
- 位掩码表达式
这个工作是因为当你在一个const组中仅仅有一个标识符在第一行的时候,它将使用增长的iota取得const ( IgEggs Allergen = 1 << iota // 1 << 0 IgChocolate // 1 << 1 )
前面的表达式
并且再运用它。在Go语言的spec中,这就是所谓的隐性重复最后一个非空的表达式列表。 - 定义在一行的情况
iota在下一行增长,而不是立即取得它的引用const ( Apple, Banana = iota + 1, iota + 2 Cherimoya, Durian Elderberry, Fig )
// Apple:1
// Banana:2
// Cherimoya:2
// Durian:3
// Elderberry:3
/// Fig:4 - 中间插队
那么打印出来的结果是i=0,j=3.14,k=2,l=3const ( i = iota j = 3.14 k = iota l )