package config import ( "os" "github.com/caarlos0/env/v6" "gopkg.in/yaml.v3" ) // 配置加载 // file/env/... ---> Config // 全局一份 // config 全局变量, 通过函数对我提供访问 var config *Config func C() *Config { // 没有配置文件怎么办? // 默认配置, 方便开发者 if config == nil { config = Default() } return config } // 加载配置 把外部配置读到 config全局变量里面来 // yaml 文件yaml --> conf func LoadConfigFromYaml(configPath string) error { content, err := os.ReadFile(configPath) if err != nil { return err } // 默认值 config = C() return yaml.Unmarshal(content, config) } // 从环境变量读取配置 // "github.com/caarlos0/env/v6" func LoadConfigFromEnv() error { config = C() // MYSQL_DB <---> DB // config.MySQL.DB = os.Getenv("MYSQL_DB") return env.Parse(config) }