主页 > 电脑硬件  > 

golang实现枚举

golang实现枚举
golang实现枚举 golang实现枚举 golang本身是没有枚举类型的,不像c语言,但是可以通过const & iota实现枚举的能力。 枚举在类似于业务状态或者少量下拉选择框中经常使用,比如 业务状态:待开始、进行中、失败、成功 package main import "fmt" // Status 自定义类型 type Status int const ( Pending Status = iota //待开始 0 InProgress //进行中 1 Failed //失败 2 Success //成功 3 ) func main() { fmt.Println("Pending =", Pending) fmt.Println("InProgress =", InProgress) fmt.Println("Failed =", Failed) fmt.Println("Success =", Success) }

如果不想从0开始,想从100开始

// Status 自定义类型 type Status int const ( Pending Status = iota + 100 //待开始 100 InProgress //进行中 101 Failed //失败 102 Success //成功 103 ) 使用map为常量设置对应的中文描述 package main import "fmt" // Status 自定义类型 type Status int const ( 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 main import "fmt" // Status 自定义类型 type Status int const ( 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]) //true var param = 6 fmt.Println(statusMap[Status(param)]) //false if !statusMap[Status(param)] { fmt.Println("状态未在设定内") } }
标签:

golang实现枚举由讯客互联电脑硬件栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“golang实现枚举