Golang Дайджест
7.99K subscribers
36 photos
1 file
168 links
Самое интересное из мира Go: новости, статьи, проекты, сервисы, изменения в языке и др.

Посты публикуются не часто - только самое важное, с чем я лично ознакомился.

Поэтому можно не мьютить канал =)

Обратная связь: @justskiv
Download Telegram
Clean Env - минималистичная библиотека для работы с конфигурацией

https://github.com/ilyakaznacheev/cleanenv

Чаще всего для конфигурации в Go используют spf13/viper, наверняка вы о нём слышали.

Но если вам хочется минималистичности и простоты, Clean Env вам понравится. Тут нет ничего лишнего, а значит легко разобраться, сложно сломать. При этом, всё необходимое тут имеется, в том числе поддержка популярных форматов конфига: yaml, json, toml, env.

Особенно мне понравилась работа с тегами структуры, в которую будет парситься конфиг:

- env-default - дефолтные значения для параметров
- yaml / json / env - имена параметров для парсинге из разных источников
- env-required - отмечает поле как обязательное
- и др.

У Viper не все из этого есть, а для задания имени параметров нужно использовать неочевидный тег - mapstructure.

————
Кстати, если вам вдруг не понравился ни Viper, ни Clean Env, можете посмотреть в сторону koanf, тоже интересный и популярный вариант.

————
💻 Расскажите в комментариях, какими библиотеками для конфигурации вы пользовались, какие вам больше понравились и почему

#package #configuration
Please open Telegram to view this post
VIEW IN TELEGRAM
👍36🔥53
slog - новый логгер в стандартной библиотеке

В версии Go 1.21 в stdlib будет добавлен пакет для работы с логами - slog. Сейчас его можно попробовать в виде стороннего пакета в golang/x.

Что почитать, чтобы быть в курсе:
- Дискуссия на гитхабе, с которой всё началось
- Анонс дизайн-документа slog
-
Proposal: Structured Logging, который стал результатом дискуссии
- Подробнейший разбор slog - очень советую почитать для понимания мотивации и решения
- Ещё одна статья на эту тему

————
Напомню, чего не хватало в стандартном логгере - log:

- Нет уровней логирования, например - Info, Error, Debug и др. Без этого логи сложнее фильтровать, разделять по важности.
- Нет поддержки structured logs - мы можем выводить только plain text, и не можем использовать формат, который легко парсится разными сервисами (kibana, grafana и т.п.), например - JSON
- Нельзя добавить доп. поля для контекста: userID, traceID и т.п.
и др.

#logs #package #news
🔥42👍17
gonew - генератор каркасов проектов в стандартной библиотеке

https://go.dev/blog/gonew

Новость из официального блога авторов Go, совсем свежая

Авторы языка экспериментируют с новым пакетом - gonew, котрый умеет генерировать проект из указанного шаблона. Шаблоны представляют собой обычные пакеты, которые управляются через go mod, что очень удобно.

Сейчас gonew минималистичен, и авторы активно собирают фидбэк сообщества, чтобы понимать как его развивать дальше.

Как установить:

go install golang.org/x/tools/cmd/gonew@latest

Как пользоваться:

gonew golang.org/x/example/helloserver example.com/myserver

Примеры шаблонов от авторов:

- hello: консольная утилита
- helloserver: HTTP-сервер

————

Мне очень нравится эта идея, т.к. это ещё один шаг в сторону стандартизации накапливющегося зоопарка, как и в случае slog. Сейчас у каждой компании (а то и у многих отдельных разработчиков) есть свой велосипед для генерации бойлерплэйтов, который далеко не тривиален. И выглядит это немного печально.

⚠️ Ещё раз подчеркиваю - пакет экспериментальный, а значит не спешите тащить его в свои проекты, особенно рабочие. Сейчас с ним можно просто поиграть, разобраться и написать фидбэк автрам, если есть что сказать

Расскажите в комментариях, что думаете об этой штуке?

#package #experimental
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥35👍104😁1