Go 语言中如何表示枚举值(enums)
Go 语言中没有内置的枚举类型,但可以使用 iota 来创建类似枚举的行为。iota 是一个特殊的常量计数器,在每次 const 出现时重置为0,const组内每新增一行加1。
解决方案1:使用iota
const (
Sunday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
)
func main() {
// 使用枚举值
day := Wednesday
fmt.Println(day) // 输出:2
}
解决方案2:使用string
如果你想要枚举的值是字符串,你可以使用map来模拟枚举。
type Day string
var Days = map[Day]string{
"Sunday": "星期天",
"Monday": "星期一",
"Tuesday": "星期二",
"Wednesday": "星期三",
"Thursday": "星期四",
"Friday": "星期五",
"Saturday": "星期六",
}
func main() {
// 使用枚举值
day := Days["Wednesday"]
fmt.Println(day) // 输出:星期三
}
解决方案3:使用自定义类型
如果你想要更复杂的枚举,你可以使用自定义类型。
type Day struct {
value int
name string
}
var Days = []Day{
{0, "Sunday"},
{1, "Monday"},
{2, "Tuesday"},
{3, "Wednesday"},
{4, "Thursday"},
{5, "Friday"},
{6, "Saturday"},
}
func main() {
// 使用枚举值
day := Days[3]
fmt.Println(day.name) // 输出:Wednesday
}
以上就是Go语言中表示枚举值的几种方法。
评论已关闭