Golang配置管理庫?Viper的教程詳解
一、Viper 是什么?
Viper 是應(yīng)用程序的完整配置的管理工具,用于在應(yīng)用程序中工作,可以處理所有類型的配置需求和格式。
二、安裝 Viper
go get github.com/spf13/viper
三、Viper 有什么作用
- 設(shè)置默認值
- 讀取 JSON、TOML、YAML(YML)、HCL、envfile 和 Java properties 屬性配置文件
- 實時查看和重讀配置文件(可選)
- 從環(huán)境變量中讀取
- 從遠程配置系統(tǒng)(etcd 或 Consor)讀取數(shù)據(jù),并觀察變化
- 從命令行標志讀取
- 從緩沖區(qū)讀取
- 設(shè)置顯式值
四、Viper demo 可供參考
func main() { ReadIni() ReadYml() } func ReadIni() { v := viper.New() v.AddConfigPath("./conf") // 路徑(當前路徑下的conf文件夾) v.SetConfigName("configA") // 名稱 v.SetConfigType("ini") // 類型 err := v.ReadInConfig() // 讀配置 if err != nil { if _, ok := err.(viper.ConfigFileNotFoundError); ok { fmt.Println("找不到配置文件..") } else { fmt.Println("配置文件出錯..") } } // [section] 如果沒寫就是 default,也就是下面的 key 變成 default.username s1 := v.GetString("db.username") s2 := v.GetInt("web.port") fmt.Printf("ini 文件的數(shù)據(jù)庫名字:%v, 網(wǎng)絡(luò)端口號:%v \n", s1, s2) } func ReadYml() { v := viper.New() v.AddConfigPath("./conf") v.SetConfigName("configB") v.SetConfigType("yml") err := v.ReadInConfig() if err != nil { if _, ok := err.(viper.ConfigFileNotFoundError); ok { fmt.Println("找不到配置文件..") } else { fmt.Println("配置文件出錯..") } } s1 := v.GetString("db.username") s2 := v.GetInt("web.port") s3 := v.GetString("app.time") fmt.Printf("yml 文件的數(shù)據(jù)庫名字:%v, 網(wǎng)絡(luò)端口號:%v, apptime:%v \n", s1, s2, s3) }
結(jié)果:
ini 文件的數(shù)據(jù)庫名字:admin, 網(wǎng)絡(luò)端口號:8080
yml 文件的數(shù)據(jù)庫名字:root, 網(wǎng)絡(luò)端口號:8088, apptime:05/30
配置文件內(nèi)容
- configA.ini
;數(shù)據(jù)庫配置 [db] username=admin password=123 driver=mysql port=3306 ;網(wǎng)絡(luò)配置 [web] port=8080
- configB.yml
# 數(shù)據(jù)庫配置 db: username: root password: 123 driver: mysql port: 3306 # 網(wǎng)絡(luò)配置 web: port: 8088 # APP配置 app: {id: 10,time: 05/30}
注意
以上例子在根目錄下面創(chuàng)建了 conf 文件夾,然后創(chuàng)建了 configA.ini 和 configB.yml 文件
五、總結(jié)
使用 viper 能夠很好的去管理你的配置文件信息,比如數(shù)據(jù)庫的賬號密碼,服務(wù)器監(jiān)聽的端口,你可以通過更改配置文件去更改這些內(nèi)容,而不用定位到那一段代碼上去,提高了開發(fā)效率。 需要注意的是,你還需要補充配置文件的格式相關(guān)的知識,才能更好的去使用它。
到此這篇關(guān)于Golang 配置管理庫 Viper的文章就介紹到這了,更多相關(guān)go 配置管理庫 Viper內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go?數(shù)據(jù)結(jié)構(gòu)之二叉樹詳情
這篇文章主要介紹了?Go?數(shù)據(jù)結(jié)構(gòu)之二叉樹詳情,二叉樹是一種數(shù)據(jù)結(jié)構(gòu),在每個節(jié)點下面最多存在兩個其他節(jié)點。即一個節(jié)點要么連接至一個、兩個節(jié)點或不連接其他節(jié)點,下文基于GO語言展開二叉樹結(jié)構(gòu)詳情,需要的朋友可以參考一下2022-05-05golang常用加密解密算法總結(jié)(AES、DES、RSA、Sha1、MD5)
在項目開發(fā)過程中,當操作一些用戶的隱私信息,本文主要主要介紹了golang常用加密解密算法總結(jié)(AES、DES、RSA、Sha1MD5),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04