大型項目中,通常把一些設定放入單獨的設定文檔中。viper 是管理這些設定文檔的工具。
安裝 viper go get github.com/spf13/viper
特點:
- 設定預設值
- 讀取 JSON、TOML、YAML、HCL、envfile 和 Java 屬性設定檔
- 即時觀看和重新讀取設定檔(可選)
- 從環境變數中讀取
- 從遠端配置系統(etcd 或 Consul)讀取並觀察更改
- 從命令列標誌讀取
- 從緩衝區讀取
- 設定明確的值
例子:
func main() {
//viper.SetConfigName("app") // name of config file (without extension)
//viper.SetConfigType("yaml")
viper.SetConfigFile(".env")
viper.AddConfigPath(".")
err := viper.ReadInConfig() // Find and read the config file
if err != nil { // Handle errors reading the config file
panic(fmt.Errorf("fatal error config file: %w", err))
}
fmt.Println(viper.Get("version"))
fmt.Println(viper.Get("animal"))
}
官方文檔: https://github.com/spf13/viper