IT заметки по программированию
IT заметки по программированию
IT заметки по программированию
IT заметки по программированию

Пакет Golang envconfig

Пакет envconfig в Go предназначен для удобной загрузки переменных окружения в структуры. Это популярный инструмент, который позволяет легко маппить переменные окружения на заранее определённые поля структуры и упрощает управление конфигурацией приложения.


Основные возможности envconfig:

  1. Загрузка переменных окружения в структуры.
    • Автоматически преобразует переменные окружения в нужные типы.
    • Работает с примитивами (string, int, float64, bool) и даже сложными типами (slices).
  2. Поддержка тегов.
    • Поля структуры могут использовать теги env для указания соответствующих имен переменных окружения.
    • Поддерживает дефолтные значения через теги default.
  3. Валидация и обработка ошибок.
    • Если переменная отсутствует, но обязательна, envconfig возвращает ошибку.
  4. Префикс для группировки переменных.
    • Можно задать общий префикс для всех переменных окружения, чтобы разделять конфигурации.
  5. Удобство и минимальный код.
    • Простая настройка без дополнительного кода для загрузки и парсинга переменных.

Установка:

 

Пример использования:

1. Базовый пример:

Запуск с переменными окружения:

Вывод:

2. Пример с префиксом:

Префикс позволяет группировать связанные переменные окружения.

Переменные окружения:

Вывод:

3. Список переменных окружения:

envconfig позволяет выводить все переменные окружения, которые нужны приложению.

Вывод:

4. Пример со слайсами:

Пакет поддерживает парсинг слайсов из строк через запятые.

Переменная окружения:

Вывод:

Полезные функции в envconfig:

  1. envconfig.Process(prefix string, spec interface{}) error
    • Загружает переменные окружения в переданную структуру.
  2. envconfig.Usage(prefix string, spec interface{}) error
    • Выводит список всех ожидаемых переменных окружения с их описанием.
  3. envconfig.MustProcess(prefix string, spec interface{})
    • То же, что и Process, но завершает работу программы, если возникает ошибка.

Особенности и преимущества:

  1. Удобная поддержка тегов:
    • env: имя переменной окружения.
    • default: значение по умолчанию.
    • required: отмечает переменную как обязательную.
  2. Простое преобразование типов:
    • Примитивы (строки, числа, булевы значения).
    • Сложные структуры (слайсы, массивы).
  3. Подходит для приложений, следующих 12-факторным принципам.

Когда использовать?

  • Для приложений, которые полагаются на конфигурации через переменные окружения.
  • Для работы с Docker/Kubernetes, где переменные окружения широко используются.
  • Когда нужно минимизировать ручной код для работы с конфигурациями.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *