這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
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項目地址進行瞭解