settings
[]byte type is supported
該軟件包查找必要的環境變量,並使用它們為您的應用程序指定設置。此外,軟件包使用標準validate標籤驗證了最終結構。
使用go get安裝軟件包:
go get github.com/kaatinga/settings然後,將軟件包導入您自己的代碼:
import "github.com/kaatinga/settings" 創建一個設置模型,您可以在其中使用標籤env , default和validate 。宣布變量並調用Load() :
type Settings struct {
Port string `env:"PORT" validate:"numeric"`
Database string `env:"DATABASE"`
CacheSize byte `env:"CACHE_SIZE" default:"50"`
LaunchMode string `env:"LAUNCH_MODE"`
}
var settings Settings
err := Load ( & settings )
if err != nil {
return err
} env標籤必須包含相關環境變量的名稱。 default標籤包含一個默認值,如果找不到環境變量。 validate標籤可能包含一個可選驗證規則,該規則垂下了驗證器軟件包的文檔。
| 類型 | 實際類型 |
|---|---|
| 細繩 | - |
| 布爾 | - |
| 〜int | - |
| 〜uint | - |
| 時間 | INT64 |
嵌套結構可以通過指針或無指針添加。例子:
type Model2 struct {
CacheSize byte `env:"CACHE_SIZE"`
}
type Model3 struct {
Port string `env:"PORT validate:"numeric"`
}
type Model1 struct {
Database string `env:"DATABASE"`
Model2 * Model2
Model3 Model3
}通過指針添加的嵌套結構不一定要初始化:
var settings Model1
if err := Load ( & settings ); err != nil {
return err
}但是,如果願意,可以做到。
var settings = Model1 { Model2 : new ( Model2 )}
if err := Load ( & settings ); err != nil {
return err
}配置模型在安排和使用的方式上有一些局限性。
如果將一個空結構添加到配置模型中, Load()返回錯誤。
必須初始化根模型並通過指針添加到Load()簽名中:
err := Load ( & EnvironmentSettings )
if err != nil {
return err
}否則,該函數返回錯誤。