TGViewer
Golang Юниор Golang Юниор @golangprofi · 4.98K subscribers
Post #746 1.12K
godotenv в Go: однострочник, который сэкономит тебе нервы (но не в проде)
Если ты работаешь с переменными окружения через joho/godotenv, почти наверняка у тебя в начале main.go живёт классика жанра: импорт пакета, вызов godotenv.Load(), проверка ошибки, log.Fatal на всякий случай. Работает? Да. Красиво? Нет.

А теперь фокус. Подключаешь godotenv/autoload через пустой идентификатор, и всё. Больше ничего писать не надо.

Пустой идентификатор говорит Go: «мне сам пакет не нужен, просто запусти его init()». А в init() как раз и вызывается Load().

Переменные окружения подхватываются до того, как стартует main, и даже до инициализации package-level переменных.

То есть твои var cfg = os.Getenv("...") на уровне пакета уже увидят нужные значения, а не пустоту.

Для скриптов, демок, пет-проектов и быстрых экспериментов это чистая магия.

Минус две трети бойлерплейта и ноль мыслей о том, где и когда загружать .env.

Но вот тебе ложка дёгтя, и она важная. В проде так делать нельзя. Причины простые. Во-первых, autoload молча проглатывает ошибку от Load(). Нет файла, кривые права, битая кодировка — ты об этом не узнаешь, приложение просто запустится с пустыми переменными и начнёт падать где-то глубже, в самом неожиданном месте.

Отлаживать такое удовольствие ниже среднего.

Во-вторых, никакого контроля над тем, какой файл грузить и в каком порядке.

Никаких .env.local, .env.production, никаких фолбэков. Только дефолтный .env в рабочей директории, и точка.

Autoload - отличный инструмент, когда тебе надо быстро и без лишнего шума.

Но как только проект выходит за рамки песочницы, возвращайся к явному Load() с нормальной обработкой ошибок. Явное лучше неявного, особенно когда речь про конфигурацию.
More from @golangprofi
  1. Sep 21, 2026✔️ Вакансии по Go за неделю: 📥 Senior Golang (Backend) Developer Современные логистически…
  2. Sep 16, 2026Golang for Jobseekers Автор: Bin Noorazman Hairizuan Год издания: 2023 #go #en Скачать кни…
  3. Sep 16, 2026Разница между Go-разработчиком с зарплатой в 100–200 тысяч и 500 тысяч не в количестве нап…
  4. Sep 14, 2026⚡️ Вакансии по Go за неделю: 6️⃣ Senior Go Developer GGR Global Senior · Remote · $4 000 –…
  5. Sep 13, 2026⚡️ Google выпустили официальный пакет для работы с JSON Schema в Go Это библиотека для вал…
  6. Sep 13, 2026⚙️ System Design: проектирование масштабируемых систем — новый курс на Mentorix Нагрузка,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →