91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

大田县| 云龙县| 彭山县| 辽源市| 双流县| 通江县| 天门市| 江都市| 南皮县| 德安县| 贡觉县| 泰州市| 诏安县| 洞口县| 长顺县| 漠河县| 咸宁市| 营口市| 呼玛县| 资溪县| 新巴尔虎右旗| 渑池县| 垫江县| 鸡东县| 温宿县| 兰坪| 读书| 五台县| 花莲市| 宣威市| 鄂尔多斯市| 金坛市| 阿图什市| 加查县| 嘉荫县| 康马县| 团风县| 星子县| 静宁县| 长丰县| 金溪县|