package config import ( "fmt" "github.com/spf13/viper" ) type Server struct { JWT *JWT `mapstructure:"jwt" json:"jwt" yaml:"jwt"` Mysql *Mysql `mapstructure:"mysql" json:"mysql" yaml:"mysql"` Zap *Zap `mapstructure:"zap" json:"zap" yaml:"zap"` Redis *Redis `mapstructure:"redis" json:"redis" yaml:"redis"` Exchange *Exchange `mapstructure:"exchange" json:"exchange" yaml:"exchange"` } var envConfig *Server func EnvConf() *Server { if envConfig == nil { readEnvConf() } return envConfig } func readEnvConf() { envConfigFile := GetConfigFileByMod(AppConf().Mod) fmt.Println(fmt.Sprintf("------------->>配置文件%s<<-----------", envConfigFile)) vp := viper.New() vp.SetConfigFile(envConfigFile) vp.SetConfigType("json") if err := vp.ReadInConfig(); err != nil { fmt.Println(fmt.Sprintf("------------->>%s读取失败<<-----------", envConfigFile)) setDefaultEnvConfig(vp) } else { fmt.Println(fmt.Sprintf("------------->>配置文件%s读取成功<<-----------", envConfigFile)) } if err := vp.Unmarshal(&envConfig); err != nil { panic(err) } }