Golang庫 viper讀取配置檔案

2021-10-08 01:19:39 字數 2279 閱讀 3107

viper是由steve francia編寫的開源配置解決方案, 也是cobra的作者, 我們來看下viper的功能

go get github.com/spf13/viper
github位址

在讀取配置檔案中我們將會演示viper的集中使用方式

我們以.yml檔案為例

)// 這裡的配置檔案讀取可以使用相對路徑, 我這裡因為是同級所以直接使用config.yml即可

//var filepath = "../test/config.yml"

var filepath =

"config.yml"

var cfg = config

// 這裡有倆種寫法, 如果你要讀取的配置檔案比較大而且型別較多那麼建議你使用第二種

// 第一種

type config struct

`mapstructure:"user"`

}// 第二種

type config struct

userinfo struct

func

loadconfig()

// 直接從viper物件中獲取key的value資料,並且可以定義型別

fmt.

println

(viper.

get(

"user.name"))

fmt.

println

(viper.

getint

("user.age"))

// 判斷key是否存在, 返回true/false

fmt.

println

(viper.

isset

("user.name"))

// 設定key的value值, 優先順序最高, 可以在讀取配置檔案之前設定

viper.

set(

"user.age",19

)// 將檔案內容解析後封裝到cfg物件中

err = viper.

unmarshal

(&cfg)

if err !=

nil}

// 使用時直接呼叫該方法即可

func

getinfo

() config測試**

config_test.go

import

("fmt"

"testing"

)func

testgetinfo

(t *testing.t)

輸出資訊

name : wise

age : 18

我們總結一下在上面我們使用到的viper的功能

我們來看一下viper是否可以自動更新配置檔案

// 我們讓執行緒睡眠20s, 在此期間我們去修改config.yml檔案中age的值

time.

sleep

(time.second *20)

fmt.

println

("age : "

, viper.

getint

("user.age"))

}輸出資訊

age : 18

age : 180

倆次列印結果一樣的朋友可以將睡眠時間調整的再長一點試一下

Golang 專案配置檔案讀取之 viper 實踐

在我們做乙個工程化專案的時候,經常涉及到配置檔案的讀取,viper 包很好地滿足這一需求,而且在 golang 生態中是流行度最高的。匯入方式 import github.com spf13 viper 這裡分享下我對 viper 包的使用關鍵實踐 接下來在工程入口處引用上面這個配置包的 init ...

golang 使用 viper 讀取自定義配置檔案

vipewww.cppcns.comr 支援 yaml json toml hcl 等格式,讀取非常的方便。viper程式設計客棧 官網有案例 建立 config.yaml 檔案 database driver mysql host 127.0.0.1 port 3306 username blog...

golang 配置檔案解析神器 viper

安裝方式 go get github.com spf13 viper viper是乙個十分強大的配置檔案解析工具,具有以下特點 另外需要注意的是,viper對配置中的key是大小寫不敏感的 下面我以yaml格式的配置檔案為例,介紹viper的用法,其他跟多的用法請見官網 乙個好的專案應該把配置檔案分...