go18/book/v2/config/load.go
2025-05-11 09:58:13 +08:00

48 lines
867 B
Go

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