江门市建设银行网站,wordpress显示时间插件下载地址,门户网站制作模板,东莞新增病例详惰golang实现枚举
golang实现枚举
golang本身是没有枚举类型的#xff0c;不像c语言#xff0c;但是可以通过const iota实现枚举的能力。
枚举在类似于业务状态或者少量下拉选择框中经常使用#xff0c;比如
业务状态#xff1a;待开始、进行中、失败、成功package ma…golang实现枚举
golang实现枚举
golang本身是没有枚举类型的不像c语言但是可以通过const iota实现枚举的能力。
枚举在类似于业务状态或者少量下拉选择框中经常使用比如
业务状态待开始、进行中、失败、成功package mainimport fmt// Status 自定义类型
type Status intconst (Pending Status iota //待开始 0InProgress //进行中 1Failed //失败 2Success //成功 3
)func main() {fmt.Println(Pending , Pending)fmt.Println(InProgress , InProgress)fmt.Println(Failed , Failed)fmt.Println(Success , Success)
}
如果不想从0开始想从100开始
// Status 自定义类型
type Status intconst (Pending Status iota 100 //待开始 100InProgress //进行中 101Failed //失败 102Success //成功 103
)使用map为常量设置对应的中文描述
package mainimport fmt// Status 自定义类型
type Status intconst (Pending Status iota //待开始InProgress //进行中Failed //失败Success //成功
)// 定义一个映射表键是Status类型值是对应的中文描述
var statusDescriptions map[Status]string{Pending: 待开始,InProgress: 进行中,Failed: 失败,Success: 成功,
}func main() {fmt.Println(InProgress, :, statusDescriptions[InProgress]) //1 : 进行中fmt.Println(Success, :, statusDescriptions[Success]) //3 : 成功
}
判断某个状态是否在设定内
package mainimport fmt// Status 自定义类型
type Status intconst (Pending Status iota //待开始InProgress //进行中Failed //失败Success //成功
)// 定义一个映射表键是Status类型值是对应的中文描述
var statusDescriptions map[Status]string{Pending: 待开始,InProgress: 进行中,Failed: 失败,Success: 成功,
}// 创建一个映射键为Status枚举类型值为布尔值
var statusMap map[Status]bool{Pending: true,InProgress: true,Failed: true,Success: true,
}func main() {fmt.Println(statusMap[Success]) //truevar param 6fmt.Println(statusMap[Status(param)]) //falseif !statusMap[Status(param)] {fmt.Println(状态未在设定内)}
}