golang使用viper解析配置文件的示例代碼
viper讀取配置文件
讀取配置這部分內容可以作為初始化內容寫在init函數中,后面直接調用viper相關接口即可。
yaml類型的配置文件在path目錄下,通過viper接口可以將配置文件加載到viper中,方便后續(xù)使用。
//設置配置文件 cfgFile="/path/conf/config.yaml" viper.SetConfigFile(cfgFile) //加載配置文件內容 err = viper.ReadInConfig() if err != nil { slog.Error("ReadInConfig error") }
viper讀取基本數據類型內容
在config.yaml文件中填寫如下配置:
#yaml配置文件內容 logger: level: DEBUG #log級別 max_size: 10 #log rotate文件大小配置,單位"MB" compress: true #是否壓縮舊文件
可以在go代碼中定義logger結構體,用于統(tǒng)一管理logger節(jié)點下的配置。
//定義結構體 type LogConfig struct { MaxSize int `yaml:"max_size"` Compress bool `yaml:"compress"` Level string `yaml:"level"` }
針對int,bool,string基本數據類型的配置,viper提供了對應的接口進行解析。
//viper接口獲取int,bool,string等類型內容 conf := &LogConfig{ MaxSize: viper.GetInt("logger.max_size"), Compress: viper.GetBool("logger.compress"), Level: viper.GetString("logger.level"), }
除了上述幾個數據類型還包括viper.GetChan接口,基本上可以覆蓋大多數解析情況。
viper讀取map類型配置
如果希望在配置文件中填入map形式的數據,這是viper沒有提供對應數據類型的接口,需要自定義解析方式。
config.yaml配置中內容:
#yaml配置文件內容 res: enable_flag: false res_list: {"001":"aa","002":"bb"}
采用viper.AllSettings()方法獲取全部配置,yaml數據以map形式存儲,逐步解析可以獲得res_list map類型數據。
//通過viper獲取全部配置并解析 resList := make(map[string]string) as := viper.AllSettings() res, ok := as["res"].(map[string]interface{}) if !ok { slog.Error("獲取res配置文件信息失敗") return nil } res_list, ok := res["res_list"].(map[string]interface{}) if !ok { slog.Error("獲取res_list配置文件信息失敗") return nil } for k, v := range res_list { resList[k] = v.(string) }
到此這篇關于golang使用viper解析配置文件的示例代碼的文章就介紹到這了,更多相關golang viper解析配置文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Gin與Mysql實現簡單Restful風格API實戰(zhàn)示例詳解
這篇文章主要為大家介紹了Gin與Mysql實現簡單Restful風格API示例詳解,有需要的朋友可以借鑒參考下希望能夠有所幫助,祝大家多多進步2021-11-11