go 枚举类型

134 阅读1分钟

当我们在开发过程中要进行状态判断和错误码和和状态机的时候就会考虑到用枚举。

//status == 1  表示夏天
if status == 1 {
   fmt.Println("这已经是夏天了")
   ....
}

上面这段代码用于判断当前季节,并进行对应的操作。当代码没有备注或者都是用这种数字进行判断时,代码的可读性很差。

这是我们就可以考虑用枚举来定义这些常量,再在代码中进行判断状态。 如下定义了常量四季和其对应的值:

type Season int  //定义别名类型可以在枚举常量为函数参数时,传入任意常数时报错,以及两个枚举之间不能直接进行比较

const (
   Summer Season = iota + 1
   Autumn
   Winter
   Spring
)

当我们需要判断当前状态所对应的季节时可以这样做:

status := 1    //stutas是收到的参数
switch Season(status) {
case Summer:
   fmt.Println("this is summer")
case Winter:
   fmt.Println("this is winter")
default:
   fmt.Println("nonononono")
}
if Season(status) == Summer {
   fmt.Println("summer")
}