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
}否则,该函数返回错误。