const与iota配合实现枚举
- 枚举例子
enum phoneType {
miType = 0,
huaweiType,
oppoType
};
上面的代码段中就是c/c++的枚举,一般使用枚举可以有两点好处:
- 提高代码的可读性
- 使用的时候不需要做过多的检查判断
- go语言const关键字
使用const关键字批量声明多个变量
const (
miType = 1
huaweiType = 2
oppoType
)
注意const关键字批量声明多个变量时,除了第一个外其它的常量右边的初始化表达式都可以省略,如果省略初始化表达式则表示使用前面常量的初始化表达式,对应的常量类型也是一样的。
比如上面的oppoType的值就为2
- go语言iota关键字
iota在const关键字出现时将被重置为0,同时const中每新增一行常量声明将使iota计数一次可以将iota可理解为const语句块中的行索引。
看下面的代码:
package main
import (
"fmt"
)
const x int = 10
const(
Monday = iota+x //iota+x = 0+10=10
Tuesday //iota+x iota = 1 1+10 =11
Wednesday //iota+x iota = 2 2+10 = 12
Thursday=8 //iota = 3 8
Friday //8 iota = 4 8
Saturday //8 iota = 5 8
Sunday = iota+x //iota+x iota = 6 6+10 = 16
numberOfDays//iota+x iota = 7 7+10 = 17
)
func main() {
fmt.Println("Monday=",Monday)
fmt.Println("Tuesday=",Tuesday)
fmt.Println("Wednesday=",Wednesday)
fmt.Println("Thursday=",Thursday)
fmt.Println("Friday=",Friday)
fmt.Println("Saturday=",Saturday)
fmt.Println("Sunday=",Sunday)
fmt.Println("numberOfDays=",numberOfDays)
}
综上:如果需要实现枚举变量,只用用const批量声明,第一个定义为你想要的(起始值+iota)。