日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語言 正文

Golang配置管理庫(kù)?Viper的教程詳解_Golang

作者:是記憶啦 ? 更新時(shí)間: 2022-07-28 編程語言

一、Viper 是什么?

Viper 是應(yīng)用程序的完整配置的管理工具,用于在應(yīng)用程序中工作,可以處理所有類型的配置需求和格式。

二、安裝 Viper

go get github.com/spf13/viper

三、Viper 有什么作用

  • 設(shè)置默認(rèn)值
  • 讀取 JSON、TOML、YAML(YML)、HCL、envfile 和 Java properties 屬性配置文件
  • 實(shí)時(shí)查看和重讀配置文件(可選)
  • 從環(huán)境變量中讀取
  • 從遠(yuǎn)程配置系統(tǒng)(etcd 或 Consor)讀取數(shù)據(jù),并觀察變化
  • 從命令行標(biāo)志讀取
  • 從緩沖區(qū)讀取
  • 設(shè)置顯式值

四、Viper demo 可供參考

func main() {
	ReadIni()
	ReadYml()
}
func ReadIni() {
	v := viper.New()
    v.AddConfigPath("./conf")  // 路徑(當(dāng)前路徑下的conf文件夾)
	v.SetConfigName("configA") // 名稱
	v.SetConfigType("ini")     // 類型
	err := v.ReadInConfig() // 讀配置
	if err != nil {
		if _, ok := err.(viper.ConfigFileNotFoundError); ok {
			fmt.Println("找不到配置文件..")
		} else {
			fmt.Println("配置文件出錯(cuò)..")
		}
	}
	// [section] 如果沒寫就是 default,也就是下面的 key 變成 default.username
	s1 := v.GetString("db.username")
	s2 := v.GetInt("web.port")
	fmt.Printf("ini 文件的數(shù)據(jù)庫(kù)名字:%v, 網(wǎng)絡(luò)端口號(hào):%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("配置文件出錯(cuò)..")
		}
	}
	s1 := v.GetString("db.username")
	s2 := v.GetInt("web.port")
	s3 := v.GetString("app.time")
	fmt.Printf("yml 文件的數(shù)據(jù)庫(kù)名字:%v, 網(wǎng)絡(luò)端口號(hào):%v, apptime:%v \n", s1, s2, s3)
}

結(jié)果:

ini 文件的數(shù)據(jù)庫(kù)名字:admin, 網(wǎng)絡(luò)端口號(hào):8080
yml 文件的數(shù)據(jù)庫(kù)名字:root, 網(wǎng)絡(luò)端口號(hào):8088, apptime:05/30

配置文件內(nèi)容

  • configA.ini
;數(shù)據(jù)庫(kù)配置
[db]
username=admin
password=123
driver=mysql
port=3306
;網(wǎng)絡(luò)配置
[web]
port=8080
  • configB.yml
# 數(shù)據(jù)庫(kù)配置
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ù)庫(kù)的賬號(hào)密碼,服務(wù)器監(jiān)聽的端口,你可以通過更改配置文件去更改這些內(nèi)容,而不用定位到那一段代碼上去,提高了開發(fā)效率。 需要注意的是,你還需要補(bǔ)充配置文件的格式相關(guān)的知識(shí),才能更好的去使用它。

原文鏈接:https://juejin.cn/post/7103452349401661471

欄目分類
最近更新