Go 代码实现 enum

18 min read

Go 语言中没有内置的枚举类型,但可以通过 const 和 iota 关键字实现枚举类型。

示例代码:

package main

import "fmt"

// 定义枚举类型
type Color int

const (
    Red Color = iota
    Green
    Blue
)

func (c Color) String() string {
    names := [...]string{"Red", "Green", "Blue"}
    if c < Red || c > Blue {
        return "Unknown"
    }
    return names[c]
}

func main() {
    c := Green
    fmt.Println(c)
    fmt.Println(c.String())
}

输出:

1
Green