PhalGo-Viper擷取配置

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

PhalGo-Viper擷取配置

viper項目地址:https://github.com/spf13/viper

什麼是viper

viper是國外大神**spf13**編寫的開源配置解決方案,viper擁有一下功能以及特性如下:

  • 設定預設值
  • 從JSON,toml YAML,HCl,和java屬性設定檔
  • 從環境變數env讀取值
  • 讀緩衝區
  • 遠程讀取設定檔
  • key不區分大小寫

為什麼用viper

viper不用擔心你的檔案格式,可以擷取環境變數,也可以從遠端擷取設定檔,並且還有緩衝機制,功能非常棒非常**牛逼**,能滿足不同的對設定檔的使用的要求,所以PhalGo採用viper來解決配置問題

初始化Config

PhalGo追求最簡單的使用各個組件所以viper我們只需要初始化就可以開始使用,我們只需要調用**NewConfig**函數需要你傳入兩個參數,一個是你檔案相對於項目目錄的相對路徑,比如我在項目目錄下建立的/conf檔案目錄就需要填寫conf,第二個就是設定檔檔案名稱,只需要名稱即可,可以不用輸入尾碼viper會自動識別.

//初始化設定檔phalgo.NewConfig("conf", "sys")

比如我們建立了一個**sys.toml**檔案內容如下:

強烈推薦使用toml格式,toml格式介紹:http://mlworks.cn/posts/introduction-to-toml/

[system]port = ":1234"[dbDefault]dbHost = "localhost"           #資料庫連接地址dbName = "phalgo"              #資料庫名稱dbUser = "root"                #資料庫使用者名稱dbPasswd = ""                  #資料庫密碼dbPort = "3306"                #資料庫連接埠號碼dbOpenconns_max = 20           #最大串連數dbIdleconns_max = 0            #最大空閑串連dbType = "mysql"               #資料庫類型

我們就可以簡單的使用

phalgo.Config.GetString("system.port")  #返回一個string類型的":1234"

phalgo.Config和**"github.com/spf13/viper"**是等價的,所以可以通過phalgo.Config來調用viper提供的方法

Config詳解

設定預設值

phalgo.Config.SetDefault("ContentDir", "content")phalgo.Config.SetDefault("LayoutDir", "layouts")phalgo.Config.SetDefault("Taxonomies", map[string]string{"tag": "tags", "category": "categories"})

擷取不同類型配置

  • phalgo.Config.Get(key string) : interface{}
  • phalgo.Config.GetBool(key string) : bool
  • phalgo.Config.GetFloat64(key string) : float64
  • phalgo.Config.GetInt(key string) : int
  • phalgo.Config.GetString(key string) : string
  • phalgo.Config.GetStringMap(key string) : map[string]interface{}
  • phalgo.Config.GetStringMapString(key string) : map[string]string
  • phalgo.Config.GetStringSlice(key string) : []string
  • phalgo.Config.GetTime(key string) : time.Time
  • phalgo.Config.GetDuration(key string) : time.Duration
  • phalgo.Config.IsSet(key string) : bool

擷取多級參數

viper支援擷取配置的層級關係,在每個key之間通過"."分割機制,比如上面示範的

phalgo.Config.GetString("system.port")

就是擷取的二級參數

更多

viper提供很多有意思的功能,可以通過開篇viper項目地址進行瞭解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.