Le package recherche les variables d'environnement nécessaires et les utilise pour spécifier les paramètres de votre application. De plus, le package valide la structure finale en utilisant des balises validate standard.
Utilisez go get pour installer le package:
go get github.com/kaatinga/settingsEnsuite, importez le package dans votre propre code:
import "github.com/kaatinga/settings" Créez un modèle de paramètres où vous pouvez utiliser des balises env , default et validate . Annoncez une variable et appelez 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 balise env doit contenir le nom de la variable d'environnement associée. La balise default contient une valeur par défaut utilisée au cas où la variable d'environnement n'aurait pas été trouvée. La balise validate peut contenir une règle de validation facultative en jachère de la documentation du package de validateur.
| Taper | Type réel |
|---|---|
| chaîne | - |
| booléen | - |
| ~ int | - |
| ~ uint | - |
| durée | int64 |
Des structures imbriquées peuvent être ajoutées via le pointeur ou sans pointeur. Exemple:
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
}Les structures imbriquées qui ont ajouté via le pointeur ne doivent pas nécessairement être initialisées:
var settings Model1
if err := Load ( & settings ); err != nil {
return err
}Néanmoins, si vous le souhaitez, vous pouvez le faire.
var settings = Model1 { Model2 : new ( Model2 )}
if err := Load ( & settings ); err != nil {
return err
}Le modèle de configuration a certaines limites dans la façon dont il est organisé et utilisé.
Si vous ajoutez une structure vide à votre modèle de configuration, Load() renvoie l'erreur.
Le modèle racine doit être initialisé et ajouté à la signature Load() via le pointeur:
err := Load ( & EnvironmentSettings )
if err != nil {
return err
}Sinon, la fonction renvoie l'erreur.