1, 准备配置文件
config.toml
[app]
name = "demo"
host = "0.0.0.0"
port = "8050"
key = "this is your app key"
2, 定义配置对象
// 定义全局变量,为了不被程序在运行时恶意修改,设置成私有变量
var config *Config
// 要想获取配置,单独提供函数,通过这个函数获取全局config对象
func C() *Config {
return config
}
type Config struct {
App *App `toml:"app"`
Log *Log `toml:"log"`
MySQL *MySQL `toml:"mysql"`
}
type App struct {
Name string `toml:"name" env:"APP_NAME"`
Host string `toml:"host" env:"APP_HOST"`
Port string `toml:"port" env:"APP_PORT"`
Key string `toml:"key" env:"APP_KEY"`
EnableSSL bool `toml:"enable_ssl" env:"APP_ENABLE_SSL"`
CertFile string `toml:"cert_file" env:"APP_CERT_FILE"`
KeyFile string `toml:"key_file" env:"APP_KEY_FILE"`
}
3, 定义配置对象的初始化函数
// 提供初始化函数
func NewDefaultApp() *App {
return &App{
Name: "demo",
Host: "10.10.1.10",
Port: "8090",
}
}
4, 解析配置文件
import "github.com/BurntSushi/toml"
// 从Toml格式的配置文件加载配置
func LoadConfigFromToml(filepath string) error {
// 这里的config使用的是全局的config
config = NewDefaultConfig()
_, err := toml.DecodeFile(filepath, config)
//toml.Decode()
if err != nil {
return fmt.Errorf("load config from file error, path: %s , %s ", filepath, err)
}
return nil
}