package config import ( "bytes" "encoding/json" "epur-pay/model" "fmt" "gopkg.in/ini.v1" ) type Config struct { Common struct { RunMode string `yaml:"RunMode"` LogFilePath string `yaml:"LogFilePath"` //日志根路径 Domain string `yaml:"Domain"` ResourcePath string `yaml:"ResourcePath"` } `yaml:"Common"` ApiServer model.ListenServer `yaml:"ApiServer"` Rds model.Rds `yaml:"Rds"` Redis model.Redis `yaml:"Redis"` } var Cf = Config{} func New(Name string) { var ( cfg *ini.File err error configPath string ) if Cf.Common.RunMode == "debug" { configPath = fmt.Sprintf("config/%s_test.ini", Name) } else { configPath = fmt.Sprintf("config/%s.ini", Name) } if cfg, err = ini.Load(configPath); err != nil { panic(err) } mapTo("Common", &Cf.Common, cfg) mapTo("ApiServer", &Cf.ApiServer, cfg) mapTo("Rds", &Cf.Rds, cfg) mapTo("Redis", &Cf.Redis, cfg) fmt.Println("Cf -> config load success.") } func (conf *Config) String() string { b, err := json.Marshal(*conf) if err != nil { return fmt.Sprintf("%+v", *conf) } var out bytes.Buffer err = json.Indent(&out, b, "", " ") if err != nil { return fmt.Sprintf("%+v", *conf) } return out.String() } // mapTo map section func mapTo(section string, v interface{}, cfg *ini.File) { err := cfg.Section(section).MapTo(v) if err != nil { panic(err) } }