52 lines
867 B
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)
|
|
}
|