El paquete busca las variables de entorno necesarias y las utiliza para especificar la configuración de su aplicación. Además, el paquete valida la estructura final utilizando etiquetas validate estándar.
Use go get para instalar el paquete:
go get github.com/kaatinga/settingsLuego, importe el paquete en su propio código:
import "github.com/kaatinga/settings" Cree un modelo de configuración donde pueda usar etiquetas env , default y validate . Anunciar una variable y llamar 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
} La etiqueta env debe contener el nombre de la variable de entorno relacionada. La etiqueta default contiene un valor predeterminado que se usa en caso de que no se encuentre la variable de entorno. La etiqueta validate puede contener una regla de validación opcional en juego con la documentación del paquete de validador.
| Tipo | Tipo real |
|---|---|
| cadena | - |
| booleano | - |
| ~ int | - |
| ~ uint | - |
| tiempo. Duración | int64 |
Las estructuras anidadas se pueden agregar a través del puntero o sin puntero. Ejemplo:
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
}Las estructuras anidadas que se agregaron a través del puntero no deben inicializarse necesariamente:
var settings Model1
if err := Load ( & settings ); err != nil {
return err
}No obstante, si quieres, puedes hacerlo.
var settings = Model1 { Model2 : new ( Model2 )}
if err := Load ( & settings ); err != nil {
return err
}El modelo de configuración tiene algunas limitaciones en cómo se organiza y usa.
Si agrega una estructura vacía a su modelo de configuración, Load() devuelve el error.
El modelo de raíz debe inicializarse y agregar a la firma Load() a través del puntero:
err := Load ( & EnvironmentSettings )
if err != nil {
return err
}De lo contrario, la función devuelve el error.