亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Viper解析以及如何進行加載配置

發布時間:2021-10-12 11:50:34 來源:億速云 閱讀:142 作者:柒染 欄目:云計算

這期內容當中小編將會給大家帶來有關Viper解析以及如何進行加載配置,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Viper解析&加載配置

1    Viper是什么

Viper是一個方便Go語言應用程序處理配置信息的庫。它可以處理多種格式的配置。它支持的特性:

  • 設置默認值

  • 從JSON、TOML、YAML、HCL和Java properties文件中讀取配置數據

  • 可以監視配置文件的變動、重新讀取配置文件

  • 從環境變量中讀取配置數據

  • 從遠端配置系統中讀取數據,并監視它們(比如etcd、Consul)

  • 從命令參數中讀物配置

  • 從buffer中讀取

  • 調用函數設置配置信息

<a name="ZANBa"></a>

2    安裝viper

go get github.com/spf13/viper

在go的根目錄下 新建 web/config目錄 ,目錄參考: /usr/local/go/web/config<br /><br /> Viper解析以及如何進行加載配置 <a name="xdPLW"></a>

3    Viper在Go項目中如何使用

<a name="dVtV0"></a>

在 config目錄中,新建 config.yaml (配置)文件,內容如下:

common:  database:    name: test    host: 127.0.0.1

<a name="WUC5o"></a>

3.1    在config目錄中,新建 config.go (獲取配置)文件,內容如下
package configimport (    "fmt"    "github.com/spf13/viper")func Init() (interface{},error) {  //模塊中供其他包調用的方法,首字母必須大寫    //viper設置 配置    viper.Set("name","abc")    fmt.Printf("name的值是%v\n",viper.GetString("name") )    //讀取配置文件配置    viper.AddConfigPath("config")    viper.SetConfigName("config")    error := viper.ReadInConfig()    /*    代碼解析:        viper.AddConfigPath("conf")用來指定yaml配置文件的路徑        viper.SetConfigName("config")用來指定配置文件的名稱        viper.ReadInConfig()是解析配置文件的函數,如果配置文件的路徑錯誤獲名稱錯誤則解析失敗,會報錯誤        viper.GetString("database.name")是用來從配置文件中根據層級關系來獲取數據        最后,通過fmt.Println()對數據結果進行輸出    */    if(error != nil){        panic(error)    }    c := viper.AllSettings() //獲取所有配置    return c,nil}//獲取數據庫配置信息func GetDatabaseInfo() map[string]interface{} {  //模塊中供其他包調用的方法,首字母必須大寫    return viper.GetStringMap("common.database")}//獲取環境變量func GetEnvInfo(env string) string {    viper.AutomaticEnv()    return viper.GetString(env)}

<a name="HMur3"></a>

3.2    web目錄中,新建 testviper.go (加載配置)文件,內容如下:
package mainimport (    "fmt"    "web/config")func main() {    vipConfig,error := config.Init()                                  //vipConfig是配置    fmt.Printf("config.init error是%v\n", error)    //fmt.Printf("config.init vipConfig是%v\n",vipConfig,)    database := config.GetDatabaseInfo()    fmt.Printf("直接獲取common[database]配置是%v\n", database)    fmt.Printf("直接獲取common[database][host]配置是%v\n", database["host"])    //因為我們不知道 vipConfig 的下級是什么類型的數據,所以這里使用了interface{}    //因此所有的類型、任意動態的內容都可以解析成 interface{}。    for key,val := range vipConfig.(map[string]interface{}){        //循環接口類型,獲取配置信息        fmt.Printf("vipConfig 的key是%v val是%v\n",key,val )        switch val.(type) {                                          //判斷val的類型        case map[string]interface{}:                                //如果是 interface接口類型            for ke,va := range val.(map[string]interface{}){        //循環接口類型,獲取配置信息                fmt.Printf("vipConfig 的ke是%v va是%v\n",ke,va )                switch va.(type) {                                    //判斷va的類型                case map[string]interface{}:                         //如果是 interface接口類型                    for k,v := range va.(map[string]interface{}){   //循環接口類型,獲取配置信息                        fmt.Printf("vipConfig 的k是%v v是%v\n",k,v )                    }                }            }        }    }    //viper可以獲取服務器的環境變量    GO111MODULE := config.GetEnvInfo("GO111MODULE")    fmt.Printf("GO111MODULE的值是%v\n",GO111MODULE)}

<a name="GGfRe"></a>

3.3    使用 go run testviper.go 運行該文件即可
[root@localhost web]# go run testviper.goname的值是abcconfig.init error是
直接獲取common[database]配置是map[host:[127.0.0.1] name:[test]]直接獲取common[database][host]配置是[127.0.0.1]vipConfig 的key是common val是map[database:map[host:127.0.0.1 name:test]]vipConfig 的ke是database va是map[host:127.0.0.1 name:test]vipConfig 的k是name v是testvipConfig 的k是host v是127.0.0.1vipConfig 的key是name val是abcGOROOT的值是on

<a name="RrRfA"></a>

viper支持的加載配置文件類型很多,我們從配置文件讀取或者獲取相關需要的數據信息,根據文件后綴名查詢分割相關的配置文件類型指定操作配置的后綴名指定。

上述就是小編為大家分享的Viper解析以及如何進行加載配置了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浠水县| 新邵县| 五寨县| 呼伦贝尔市| 虞城县| 洛阳市| 隆尧县| 东港市| 昭苏县| 长治县| 新安县| 阿坝县| 湟源县| 化隆| 怀化市| 资源县| 津南区| 宁强县| 通河县| 克什克腾旗| 灌南县| 合肥市| 克山县| 永和县| 新竹县| 高州市| 平泉县| 桃江县| 台湾省| 浦江县| 罗甸县| 锡林郭勒盟| 腾冲县| 阿克陶县| 云南省| 东海县| 名山县| 吐鲁番市| 青浦区| 洛阳市| 通江县|