首頁 > 軟體

Golang設定管理庫 Viper的教學詳解

2022-05-31 14:00:27

一、Viper 是什麼?

Viper 是應用程式的完整設定的管理工具,用於在應用程式中工作,可以處理所有型別的設定需求和格式。

二、安裝 Viper

go get github.com/spf13/viper

三、Viper 有什麼作用

  • 設定預設值
  • 讀取 JSON、TOML、YAML(YML)、HCL、envfile 和 Java properties 屬性組態檔
  • 實時檢視和重讀組態檔(可選)
  • 從環境變數中讀取
  • 從遠端設定系統(etcd 或 Consor)讀取資料,並觀察變化
  • 從命令列標誌讀取
  • 從緩衝區讀取
  • 設定顯式值

四、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 檔案的資料庫名字:%v, 網路埠號:%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 檔案的資料庫名字:%v, 網路埠號:%v, apptime:%v n", s1, s2, s3)
}

結果:

ini 檔案的資料庫名字:admin, 網路埠號:8080
yml 檔案的資料庫名字:root, 網路埠號:8088, apptime:05/30

組態檔內容

  • configA.ini
;資料庫設定
[db]
username=admin
password=123
driver=mysql
port=3306
;網路設定
[web]
port=8080
  • configB.yml
# 資料庫設定
db: 
    username: root
    password: 123
    driver: mysql
    port: 3306
# 網路設定
web:
    port: 8088
# APP設定
app: {id: 10,time: 05/30}

注意

以上例子在根目錄下面建立了 conf 資料夾,然後建立了 configA.ini 和 configB.yml 檔案

五、總結

使用 viper 能夠很好的去管理你的組態檔資訊,比如資料庫的賬號密碼,伺服器監聽的埠,你可以通過更改組態檔去更改這些內容,而不用定位到那一段程式碼上去,提高了開發效率。 需要注意的是,你還需要補充組態檔的格式相關的知識,才能更好的去使用它。

到此這篇關於Golang 設定管理庫 Viper的文章就介紹到這了,更多相關go 設定管理庫 Viper內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com