Использование конфигурационных файлов в Go: INI

В продолжение темы про конфигурационные файлы, остановлюсь на формате .INI. .INI – формат конфигурационных файлов, применяемый, в основном в ОС Windows. Тем не менее, ничто не мешает его использовать и в других окружениях.

Данный формат значительно проще, чем рассмотренные ранее TOML и YAML, но в некоторых (на самом деле большинстве, как мне кажется) случаях, его возможностей может оказаться достаточно.

Continue reading

Использование конфигурационных файлов в Go: YAML

В продолжение темы про конфигурационные файлы, взглянем на более распространённый формат YAML.

YAML (YAML Ain’t Markup Language) – это надмножество над JSON с упрощенным синтаксисом.

Continue reading

Использование конфигурационных файлов в Go: TOML

Если вы в IT более 15 минут, то должны знать, что практически каждая программа зависит от некоторых внешних переменных. Например, как я писал в статье про разработку бота для Telegram, к ним можно отнести API-ключи внешних сервисов, используемых в вашем приложении; строки подключения к базе данных; список RSS-лент; список e-mail для каких-либо уведомлений и прочее.

Самый простой способ – прописать эти переменные явно в коде, но в этом случае есть недостатки:

  1. Во-первых, если эти данные приватные, то публиковать это во внешние системы управления версиями (github, например) будет невозможно во избежание утечки этих данных;
  2. Во-вторых, если вам необходимо иметь два комплекта переменных (отладочные и релизные), то придётся каждый раз шерстить код в их поисках с последующей заменой на нужные;
  3. В-третьих, справедливо для компилируемых языков программирования, при каждом изменении настроек необходимо пересобирать приложение.

Для того, чтобы избавить себя от этих мучений можно использовать два подхода (которые приходят в голову в первую очередь): хранить переменные в переменных окружения (сомнительный вариант?); использовать конфигурационные файлы. Первый вариант не удовлетворяет условию минимальных телодвижений для переключения между конфигурациями: в этом случае необходимо заменять значения переменных не в коде, а в самих переменных окружения (уже лучше, но все-равно попыхтеть придётся).

Для себя я выбрал второй вариант как более простой и менее трудоёмкий в поддержке.

В этой и в будущих статьях хочу немного погрузиться в тему того, как и чем можно пользоваться в Go для этой задачи.

Continue reading

Шпаргалка по работе с JSON в Golang

Парсинг JSON – одна из наиболее частых задач: в JSON приходят данные в REST API, конфигурационные файлы часто оформляются в виде JSON и пр.

Go предоставляют довольно удобные механизмы для этих целей расположенные в пакете "encoding/json" включающий в себя необходимые методы. Continue reading