目录

Iota的使用方法

目录

iota是golang语言的常数计量器,只能在常量的表达式中使用。

iota在const关键字出现时被重置为0(const内部的第一行之前)。使用iota能简化定义。

1、iota只能在常量的表达式使用。

2、每次const出现时,都会让iota初始化为0,使后面的变量自动增长。

1
2
3
4
5
const (
	a = iota	// 0
	b			// 1
	c			// 2
)

3、允许自定义类型

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// go/src/time/time.go
type Weekday int

const (
	Sunday Weekday = iota
	Monday
	Tuesday
	Wednesday
	Thursday
	Friday
	Saturday
)

周日对应0,周一对应1,如此类推。

4、可以跳过的值

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
type Weekday int

const (
	Sunday Weekday = iota
	Monday
	_
	_
	Thursday
	Friday
	Saturday
)

对应的值不变,适用场景:某些枚举值可能不需要。

5、位掩码

1
2
3
4
5
const (
	a = 1<<iota	 // 1
	b			// 2
	c			// 4
)

是连续的2的幂。

6、数量级

1
2
3
4
5
6
7
const (
    B = 1 << (10*iota)
    KB
    MB
    GB
    TB
)

按照这样的生成规则可以按照数量级生成值。

7、定义在一行的情况

1
2
3
4
5
const (
	a,b = iota,iota+1	  // 0,1
	c,d					// 1,2
	e,f					// 2,3
)

iota会在下一行得到增长,而不是立即获取它的应用。

8、中间插队

1
2
3
4
5
6
const (
	a = iota	// 0
	b = 2		// 2
	c 			// 2
	d = iota	// 3
)
1
2
3
4
5
const (
	a = 2			// 2
	b = iota		// 1
	c 				// 2
)