🐍Github链接🐍
go get github.com/spf13/viper
🐍基本使用
type ServerSettingS struct {
RunMode string
HttpPort int
ReadTimeout int
WriteTimeout int
}
func TestViper(t *testing.T) {
vp := viper.New() //创建viper实例
vp.SetConfigName("config") //设置配置文件名
vp.SetConfigType("yaml") //设置配置文件类型
vp.AddConfigPath("../configs") //设置配置文件所在的目录
err := vp.ReadInConfig() // Find and read the config file
if err != nil {
if _, ok := err.(viper.ConfigFileNotFoundError); ok {
t.Error("Config file not found; ignore error if desired")
} else {
t.Error("Config file was found but another error was produced")
}
return
}
vp.SetDefault("test", "default")
res := vp.Get("test")
t.Log(res)
if err != nil {
t.Error(err)
return
}
serverSettingS := ServerSettingS{}
err = vp.UnmarshalKey("Server", &serverSettingS) //绑定到结构体变量
if err != nil {
t.Error(err)
return
}
t.Log(serverSettingS)
}
🐍监听配置文件修改
viper.OnConfigChange(func(e fsnotify.Event) {
fmt.Println("Config file changed:", e.Name)
})
viper.WatchConfig()