前言
在日常开发中我们经常会遇到要使用枚举值的情况
但是Go语言中没有枚举,那么怎么可以在Go语言中使用上枚举呢?
具体实现
1 2 3 4 5 6 7 8 9 10 11
| type WeekDay int
const ( Monday WeekDay = 1 Tuesday WeekDay = 2 Wednesday WeekDay = 3 Thursday WeekDay = 4 Friday WeekDay = 5 Saturday WeekDay = 6 Sunday WeekDay = 7 )
|
但是每个枚举项都要写一次类型声明,这样很麻烦,我们可以使用iota来简化这个过程
1 2 3 4 5 6 7 8 9 10 11 12
| type WeekDay int
const ( Monday WeekDay = iota + 1 Tuesday Wednesday Thursday Friday Saturday Sunday )
|
我们还可以为WeekDay添加一些自定义的方法
1 2 3
| func (day WeekDay) String() string { return []string{"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}[day-1] }
|
这样我们就可以通过day.String()来获取枚举项的字符串值了
代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| package main
import ( "fmt" )
type WeekDay int
const ( Monday WeekDay = iota + 1 Tuesday Wednesday Thursday Friday Saturday Sunday )
func (day WeekDay) String() string { return []string{"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}[day-1] }
func main() { fmt.Println(Monday.String()) fmt.Println(Tuesday.String()) fmt.Println(Wednesday.String()) fmt.Println(Thursday.String()) fmt.Println(Friday.String()) fmt.Println(Saturday.String()) fmt.Println(Sunday.String()) }
|