Files
bulma/flag/enum_validation.go

52 lines
867 B
Go

package main
import (
"flag"
"fmt"
"strings"
)
// Environment 运行环境枚举类型
type Environment string
const (
EnvDev Environment = "dev"
EnvTest Environment = "test"
EnvProd Environment = "prod"
)
// 合法环境白名单
var validEnvs = map[Environment]bool{
EnvDev: true,
EnvTest: true,
EnvProd: true,
}
func (e *Environment) Set(s string) error {
env := Environment(strings.ToLower(s))
if !validEnvs[env] {
return fmt.Errorf("无效运行环境,仅支持 dev/test/prod")
}
*e = env
return nil
}
func (e *Environment) String() string {
if *e == "" {
return string(EnvDev)
}
return string(*e)
}
func (e *Environment) Get() any {
return *e
}
func main() {
var env Environment = EnvDev // 默认值为 dev
flag.Var(&env, "env", "运行环境:dev/test/prod")
flag.Parse()
fmt.Printf("当前运行环境:%s\n", env)
}