加载中...

Go实现枚举

Go实现枚举

一、前言

在日常开发中我们经常会遇到要使用枚举值的情况,但是Go语言中没有枚举,那么怎么可以在Go语言中使用上枚举呢?我们可以借助一些技巧来实现枚举。

二、具体实现


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来简化这个过程

type WeekDay int

const (
    Monday WeekDay = iota + 1
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
    Sunday
)

我们还可以为WeekDay添加一些自定义的方法

func (day WeekDay) String() string {
    return []string{"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}[day-1]
}

这样我们就可以通过day.String()来获取枚举项的字符串值了

三、代码示例

// main.go

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())
}
L-Pig
L-Pig
© 2025 by L-Pig 本文基于 CC BY-NC-SA 4.0 许可 CC 协议 必须注明创作者 仅允许将作品用于非商业用途 改编作品必须遵循相同条款进行共享 最后更新:2026/1/7