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) }