Библиотека Go-разработчика | Golang
24.1K subscribers
2.49K photos
48 videos
88 files
4.96K links
Все самое полезное для Go-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/32d20779

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a4a8c24689c2151c752af0

#WXSSA
Download Telegram
⛄️ Путь к мечте продолжается

Пока вы думаете, что «не хватает времени» или «сложные обстоятельства» — Стас перенёс две нейрохирургические операции, собирает себя по кусочкам, при этом проходит курс по C++, пилит проекты для портфолио и откликается на вакансии.

➡️ Читать продолжение истории Стаса

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
🙏10
🤩 Контекст спасает AI-интеграции

AI-запросы к моделям типа GPT или Llama непредсказуемы по времени. Сервис может зависнуть на час, если провайдер тормозит.

Оборачивайте каждый вызов в контекст:
ctx, cancel := context.WithTimeout(parentCtx, 30*time.Second)
defer cancel()
response, err := client.Generate(ctx, prompt)


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

Middleware паттерн:
func AIHandler(next http.Handler) http.Handler {
return http.HandlerFunc(func(w, r) {
ctx, cancel := context.WithTimeout(r.Context(), 60*time.Second)
defer cancel()
next.ServeHTTP(w, r.WithContext(ctx))
})
}


📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
8🌚4👍3
🆚 Два способа создать пустой байтовый слайс

[]byte{} не равно []byte(nil). Оба пустые, но []byte{} == nil == false []byte(nil) == nil == true.

Разница:
// json.Unmarshal сломается на nil
err := json.Unmarshal(data, &result) // ошибка на []byte(nil)

// append ведёт себя по-разному
append([]byte{}, 1) // новый слайс [1]
append([]byte(nil), 1) // новый слайс [1] (Go фиксит)


Семантика:
[]byte{}     — "пустой буфер, готов к работе"
[]byte(nil) — "данных нет вообще"


Правило: []byte{} в 99% случаев. nil только для явного отсутствия.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
👍102🤔1
🎄 С Новым годом, гоферы!

time.Sleep(10 * 24 * time.Hour) // заслуженный отдых

fmt.Println("🎉 С Новым годом!")


Желаем быстрых билдов, понятных ошибок и defer только для закрытия ресурсов, а не дедлайнов.

🐸 Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
145🎉15👍5
🎆 Праздники с лучшим контентом 2025

Новый год пришёл, но контент не останавливается. Все праздники публикуем топ посты прошлого года — те самые, что сохраняли в закладки.

➡️ Готовьтесь к ежедневным порциям профита с хэштегом #лучшее_из_библиотеки_2025

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🎊 Как устроена новая мапа

Весной мы рассказывали о Swiss Table — новом алгоритме хеш-таблиц в Go 1.24. Тогда прошлись по верхам, теперь копнём глубже: как именно устроена map под капотом.

Раньше мапа хранила данные в бакетах со связными списками при переполнении. Теперь — массив групп, каждая содержит 8 слотов для пар ключ-значение и 64-битное контрольное слово.

Каждый байт контрольного слова хранит статус слота: пусто / занято / удалено и 7 бит от хеша ключа.

Как работает поиск

Хеш ключа разбивается на две части:
• h1 (старшие 57 бит) — определяет группу
• h2 (младшие 7 бит) — «отпечаток» для быстрого сравнения

Вместо последовательного сравнения 8 ключей Go сравнивает h2 сразу со всеми 8 байтами контрольного слова за одну SIMD-операцию. Не совпало — слот пропускается. Совпало — проверяется полный ключ.

Инкрементальный рост

Abseil (C++) перестраивает всю таблицу разом. Go так не может — это убьёт latency. Поэтому мапа разбита на независимые таблицы по 1024 записи максимум. При переполнении растёт только одна таблица, остальные не трогаются.

Итог:

Память: −15–25% за счёт компактного хранения
Скорость: до +60% на микробенчмарках
Load factor выше — меньше перестроений

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍174🤔2
👨‍💻 Ваш идеальный инструмент для разработки

В середине года мы спрашивали у вас про вашу любимую IDE. Повторим опрос? Тогда лагеря разделились почти поровну между VS Code и GoLand.

Поставьте эмоцию соответствующую вашей IDE:
👍 — VS Code
🤩 — GoLand
👾 — Другие IDE

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩156👍152👾60🥱2
🥇 Золотая лихорадка закончилась

2025-й стал годом «скучной стабильности» в айти. Компании не росли — выживали: резали бюджеты, оптимизировали команды, затягивали найм.

2383 отклика на 1 вакансию.
−20% позиций за год.
30-50% сокращений в e-commerce.

➡️ Полный разбор рынка

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
😢13😁2👾2
🗺 Карта взаимодействия приложения

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

go-callvis решает эту проблему: он строит интерактивную диаграмму вызовов прямо из кода.

Как установить:
go install github.com/ofabry/go-callvis@latest


Главная команда:
go-callvis ./...


Это запустит HTTP-сервер по адресу http://localhost:7878/, где можно интерактивно просматривать граф вызовов.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤‍🔥3👏2
⚙️ Watermill для событий

Весной мы рассказывали про Watermill, фреймворк для Go, который упрощает обработку сообщений. Поддерживает Kafka, RabbitMQ, NATS и другие брокеры.

Фреймворк дает маршрутизацию по темам, гибкую настройку под микросервисы. Встроены метрики и логи, чтобы следить за потоком. От простых очередей до распределенных систем работает стабильно.

Код простой: роутер подключаете, хендлер с subscriber и publisher. Сообщение приходит, обрабатываете, дальше шлёте. Идеально для заказов в e-commerce или аналитики.

Пример:
r := router.NewRouter(router.Config{}, logger)
r.AddHandler(
"order_handler",
"orders",
kafkaSubscriber,
"processed_orders",
rabbitPublisher,
func(msg *message.Message) ([]*message.Message, error) {
// Логика обработки сообщения
return []*message.Message{msg}, nil
},
)
r.Run()


➡️ Дополняем пост ссылкой на инструмент

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔42
Высокопроизводительные AI-агенты: пора строить экосистемы

Go идеально подходит для инфраструктуры ИИ, но чтобы управлять логикой моделей, нужны паттерны автономности. В 2026-м недостаточно уметь дёргать OpenAI API.

На курсе «Разработка AI-агентов» мы учим строить автономные системы:

— использование паттерна ReAct для принятия решений агентом;
— оркестрация в n8n для управления сложными флоу;
— внедрение протокола MCP для обмена данными;
— создание быстрых RAG-систем для работы с контекстом.

Дипломный проект — автономная группа агентов, решающая задачи анализа рынка или автоматизации саппорта.

❄️ До 12 января действует акция «3 в 1»: забирай курс по ИИ-агентам и 2 дополнительных курса в подарок.

Ворваться в AI-разработку
😁1
🧱 7 архитектурных паттернов, которые должен знать каждый программист

Архитектурные паттерны — это фундаментальные подходы, помогающие создавать масштабируемые, устойчивые и поддерживаемые решения.

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

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱4👏1
🤩 Это скорее всего главный мем 2025 года

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
😁334💯2
💡 Go-кэш за 5 минут

Одной командой и парой строк кода делаем кэш для вашего приложения.

Установка
go get github.com/patrickmn/go-cache


Быстрый пример
c := cache.New(5*time.Minute, 10*time.Minute)
c.Set("foo", "bar", cache.DefaultExpiration)

val, found := c.Get("foo")
if found {
fmt.Println("Found:", val)
}

• 5m — TTL по умолчанию для всех ключей
• 10m — интервал очистки просроченных ключей
• можно указать cache.NoExpiration — чтобы хранить вечно

Полезные методы
// Установить с TTL
c.Set("key", "value", time.Minute)
// Получить значение
c.Get("key")
// Удалить ключ
c.Delete("key")
// Очистить всё
c.Flush()


📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍7🌚7
⚙️ Декларативная валидация данных в Go

Zog – это библиотека, вдохновлённая Zod. Она позволяет гибко и декларативно проверять входные данные, минимизируя ручную обработку ошибок.

Где пригодится

• Валидация JSON-запросов в API
• Проверка параметров HTTP-запросов
• Чтение и проверка переменных окружения
• Минимизация кода валидации и ошибок

Пример использования:
var UserSchema = zog.Object(map[string]zog.Schema{
"username": zog.String().Min(3).Max(20),
"email": zog.String().Email(),
"age": zog.Number().Min(18),
})

func main() {
data := map[string]interface{}{
"username": "go_dev",
"email": "test@proglib.io",
"age": 25,
}

parsed, err := UserSchema.Parse(data)
if err != nil {
fmt.Println("Ошибка валидации:", err)
return
}

fmt.Println("Успешно:", parsed)
}

Создаём схему UserSchema, где username должен быть строкой длиной от 3 до 20 символов, email – валидным email-адресом, а age – числом не меньше 18. Передаём тестовый JSON и проверяем его с помощью UserSchema.Parse().

🖇 Официальный репозиторий проекта

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥41
📎 Go решил отдохнуть

В рейтинге TIOBE наш любимый язык за год потерял 8 позиций.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
😢26❤‍🔥2😁1🥱1
🆚 Go vs C#: когда что выбирать

В феврале мы сравнивали эти два языка — пост собрал много комментариев. Освежим основные тезисы.

Область применения

• Go — детище Google для облака, микросервисов и высоконагруженных систем. Простота и скорость — главные козыри.

• C# — инструмент Microsoft для корпоративного софта, игр на Unity и десктопа под Windows.

Кроссплатформенность

• Go компилируется в один бинарник без зависимостей — запускается где угодно.

• C# работает через .NET Core на разных платформах, но требует рантайм.

Система типов

• Go минималистичен: никакого наследования, только интерфейсы и композиция.

• C# даёт полный ООП-арсенал: наследование, дженерики, функциональные фишки.

Когда что брать

• Go — если пишете API, микросервисы, CLI-утилиты. Когда важны простота деплоя и производительность без магии.

• C# — если нужен Unity, десктоп под Windows или мощная корпоративная экосистема с LINQ и Entity Framework.

➡️ Заглядывайте в Библиотеку шарписта, там тоже хит-парад лучших постов 2025 года

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
10🤔7
🧃 Как вы там на новогодних? Ещё не осеньорились?

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6💯6😢1
⚡️ Обработку ошибок в Go не будут менять

Команда разработки Go столкнулась с трудностями при попытке упростить этот процесс через синтаксические изменения языка.

За последние несколько лет разработчики пытались улучшить обработку ошибок через:

• Механизм check/handle в 2018.
• Функцию try в 2019.
• Предложение с оператором «?» в 2024.

Предложенные механизмы не получили поддержки сообщества, и разработчики решили сохранить текущую модель обработки ошибок.

➡️ Читать размышления разработчиков

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍405👏3😢2
💻 Не только commit и push

Напоминаем вам простые, но полезные команды для работы с git-репозиториями.

1. Отображение истории в виде графа:
git log --graph --oneline --all --decorate


2. Временное сохранение изменений без коммита:
git stash push -m "Описание стэша"
git stash list
git stash apply stash@{0}


3. Поиск по коммитам:
git log -S "поисковая строка"


4. Переименование последних коммитов в интерактивном режиме:
git rebase -i HEAD~3


Вспомнили все команды — ставьте 👍

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🥱10😢2❤‍🔥1👏1
Параллелизм 2.0: оркестрация автономных агентов на Go

В 2026 году мощь Go идеально ложится на задачи управления роем ИИ-агентов. Пока другие пишут простые скрипты, мы строим высоконагруженные системы с автономным принятием решений.

На курсе вы изучите:

— паттерн ReAct: создание «сознательных» ботов на базе LLM;
— работу с n8n для быстрой сборки конвейеров автоматизации;
— протокол MCP от Anthropic для общения между агентами;
— продвинутый RAG для эффективной работы с контекстом.

Начните год с технологий, которые изменят ваш подход к бэкенду.

🧨 До 12 января акция «3 в 1»: забирайте курс по ИИ-агентам и ещё два в придачу.

Ворваться в AI-экосистему
🥱112👾1