O pacote procura as variáveis de ambiente necessárias e as usa para especificar configurações para o seu aplicativo. Além disso, o pacote valida a estrutura final usando tags validate padrão.
Use go get para instalar o pacote:
go get github.com/kaatinga/settingsEm seguida, importe o pacote para o seu próprio código:
import "github.com/kaatinga/settings" Crie um modelo de configurações em que você possa usar as tags env , default e validate . Anunciar uma variável e 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
} A tag env deve conter o nome da variável de ambiente relacionado. A tag default contém um valor padrão usado caso a variável de ambiente não tenha sido encontrada. A tag validate pode conter uma regra de validação opcional que contornando a documentação do pacote Validador.
| Tipo | Tipo real |
|---|---|
| corda | - |
| booleano | - |
| ~ int | - |
| ~ uint | - |
| time.Duration | Int64 |
Estruturas aninhadas podem ser adicionadas via ponteiro ou sem ponteiro. Exemplo:
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
}As estruturas aninhadas que adicionadas via ponteiro não devem ser necessariamente inicializadas:
var settings Model1
if err := Load ( & settings ); err != nil {
return err
}No entanto, se você quiser, você pode fazê -lo.
var settings = Model1 { Model2 : new ( Model2 )}
if err := Load ( & settings ); err != nil {
return err
}O modelo de configuração tem algumas limitações na forma como é organizado e usado.
Se você adicionar uma estrutura vazia ao seu modelo de configuração, Load() Erro de retornar.
O modelo raiz deve ser inicializado e adicionado à assinatura Load() via ponteiro:
err := Load ( & EnvironmentSettings )
if err != nil {
return err
}Caso contrário, a função retorna um erro.