go语言——const与iota配合实现枚举

const与iota配合实现枚举

  • 枚举例子
enum phoneType {

    miType = 0,

    huaweiType,

    oppoType

};

上面的代码段中就是c/c++的枚举,一般使用枚举可以有两点好处:

  1. 提高代码的可读性
  2. 使用的时候不需要做过多的检查判断
  • 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)。

你可能感兴趣的:(go语言基础,go语言)