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我們總結一下在上面我們使用到的viper的功能age : 18
我們來看一下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的用法,其他跟多的用法請見官網 乙個好的專案應該把配置檔案分...