Пакет поиск необходимых переменных среды и использует их для указания настроек для вашего приложения. Кроме того, пакет проверяет окончательную структуру с использованием стандартных тегов 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 может содержать дополнительное правило проверки, пропадающее документацию пакета Validator.
| Тип | Реальный тип |
|---|---|
| нить | - |
| логический | - |
| ~ 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
}В противном случае функция возвращает ошибку.