Das Paket sucht nach den erforderlichen Umgebungsvariablen und gibt sie an, um Einstellungen für Ihre Anwendung anzugeben. Darüber hinaus validiert das Paket die endgültige Struktur mithilfe von Standard validate -Tags.
Verwenden Sie go get , um das Paket zu installieren:
go get github.com/kaatinga/settingsImportieren Sie das Paket dann in Ihren eigenen Code:
import "github.com/kaatinga/settings" Erstellen Sie ein Einstellungsmodell, bei dem Sie Tags env , default verwenden und validate können. Eine Variable ankündigen und Load() aufrufen:
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
} Das env -Tag muss den Namen der zugehörigen Umgebungsvariablen enthalten. Das default -Tag enthält einen Standardwert, der für den Fall der Umgebungsvariablen nicht gefunden wurde. Das validate -Tag kann eine optionale Validierungsregel enthalten, in der die Dokumentation des Validator -Pakets gefallen ist.
| Typ | Echter Typ |
|---|---|
| Saite | - - |
| boolean | - - |
| ~ int | - - |
| ~ Uint | - - |
| Zeit.Duration | INT64 |
Verschachtelte Strukturen können über Zeiger oder ohne Zeiger hinzugefügt werden. Beispiel:
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
}Die verschachtelten Strukturen, die über Zeiger hinzugefügt wurden, dürfen nicht unbedingt initialisiert werden:
var settings Model1
if err := Load ( & settings ); err != nil {
return err
}Wenn Sie möchten, können Sie es jedoch tun.
var settings = Model1 { Model2 : new ( Model2 )}
if err := Load ( & settings ); err != nil {
return err
}Das Konfigurationsmodell hat einige Einschränkungen bei der Anordnung und Verwendung.
Wenn Sie Ihrem Konfigurationsmodell eine leere Struktur hinzufügen, gibt Load() den Fehler zurück.
Das Stammmodell muss initialisiert und zur Signatur der Load() über Zeiger hinzugefügt werden:
err := Load ( & EnvironmentSettings )
if err != nil {
return err
}Andernfalls gibt die Funktion einen Fehler zurück.