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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
🌟 Первый релиз-кандидат Go 1.26

Go команда выкатили Go 1.26 RC1 и просят гоферов прогнать на нём нагрузки и тесты. Это тот самый момент, когда можно поймать баги регресса заранее и заодно подготовиться к нововведениям до финального релиза.

В 1.26 заметный упор на производительность и рантайм к примеру, ускорили cgo вызовы и мелкие аллокации. Если у вас есть прод на Go, сейчас хороший момент добавить ещё один CI job на go1.26rc1 и посмотреть, как себя ведут сборка, тесты и перфоманс.

Попробовать:
go install golang.org/dl/go1.26rc1@latest
go1.26rc1 download


Команда отдельно напоминает про телеметрию можно включить её командой:
go telemetry on


➡️ Release notes

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

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

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🤔1
👎 Почему context.Value портит код

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

Но именно в этом и проблема context.Value превращается в чёрный ящик, ломает типобезопасность и делает важные зависимости невидимыми.

Паттерн «A положил payment в контекст, C его вытащил, а B просто прокинул ctx дальше» выглядит аккуратно, пока вы помните все неочевидные места чтения. Через неделю уже не видно, какие функции реально зависят от payment а это критические бизнес данные, спрятанные в контейнер без гарантий на уровне компилятора.

Любая ошибка в ключе, типе или месте, где забыли вызвать WithValue, всплывает только в рантайме, иногда в виде тихих багов, а не паники.

Как обычно делают с context.Value:
type Payment struct {
ID string
Amount int
}

func A(ctx context.Context, transactionID string) {
payment := dbGetPayment(ctx, transactionID)

// Кладём бизнес данные в контекст
ctx = context.WithValue(ctx, "payment", payment)

B(ctx)
}

func B(ctx context.Context) {
// Эта функция формально не знает про payment,
// но обязана протащить ctx дальше
doSomething(ctx)
C(ctx)
}

func C(ctx context.Context) {
// Где то глубоко в стеке достаем payment из «чёрного ящика»
payment, ok := ctx.Value("payment").(Payment)
if !ok {
log.Println("payment not found in context")
return
}

processPayment(payment)
}


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

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

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

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1310🥱5💯4
📎 Микрокомпилятор для микрокомпьютеров

TinyGo подвезли релиз 0.40.0 это финальное обновление 2025 года с упором на поддержку свежего LLVM, новое железо и зачистку багов.

Параллельно ускорили и облегчали встроенный сборщик мусора за счет урезания либы bdwgc и оптимизаций.

По железу появилась поддержка новых плат и микроконтроллеров в том числе ESP32 S3, Xiao ESP32S3, Gopher ARCADE и RP2350.

Внутри компилятора и рантайма прошлись по WASM и WASI добавили режим buildmode=wasi-legacy для старых сценариев, улучшили обработку финализаторов и экспорта функций, а также подчистили ошибки в интерпретаторе, cgo и обработке сообщений линкера.

➡️ Release notes

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

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

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍32
💼 Карьерная «страховка» для IT‑шника

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

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

🐸 Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101
⚙️ Дамп вместо fmt.Printf

godump это минималистичный инструмент для отладки который красиво печатает структуры на Go в терминале или HTML и не требует зависимостей.

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

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

Пример:
type User struct { Name string }
godump.Dump(User{Name: "Alice"})
// #main.User {
// +Name => "Alice" #string
// }


➡️ Репозиторий

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

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

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🤔21
Под капотом управляемой базы данных в MWS Cloud Platform

Разбираем внутренности managed баз в 10-м выпуске реалити-проекта Building the Cloud.

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

📅 Эфир 25 декабря, 14:00 (мск)

🎁 Розыгрыш мерча MWS за лучший вопрос

👉 Регистрация
1
Что выведет код

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

👉 Посмотреть ответ в нашем канале с задачам

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

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

#ReadySetGo
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74🥱2👾2
🎓 Твой опыт стоит дорого — стань экспертом Proglib Academy

Чувствуешь, что накопил достаточно знаний, чтобы делиться ими с другими?

Мы ищем сильных практиков, которые хотят попробовать себя в роли:

— преподавателей;
— авторов курсов;
— наставников.

Это возможность не только монетизировать экспертизу, но и прокачать личный бренд, структурировать собственные знания и вырастить новое поколение специалистов.

👉 Заполни короткую анкету
1👾1
🖥 Публикуем модуль на GitHub и подключаем в проект

Go-модули упрощают работу с зависимостями. Код делится на модули, которые легко публиковать и импортировать. Сейчас покажем как выгрузит свой модуль на GitHub и подтянуть его в проект.

Подготовка модуля

Сначала создайте директорию для модуля и инициализируйте его. Запустите go mod init github.com/ваш-username/имя-модуля.

Добавьте код в файлы, например, функцию в math.go:
package math

func Add(a, b int) int {
return a + b
}


Создайте репозиторий на GitHub, добавьте файлы с git add ..

Публикация на GitHub

1. Сделайте коммит изменений git commit -m "v0.1.0".
2. Создайте тег git tag v0.1.0.
3. Отправьте тег git push origin v0.1.0.

Go автоматически индексирует модуль на pkg.go.dev после пуша.

Импорт в другой проект

В новом проекте запустите go mod init myproject. Импортируйте модуль в коде: import "github.com/ваш-username/имя-модуля/math". Вызовите функцию, например result := math.Add(2, 3). Запустите go mod tidy для обновления зависимостей.

Модуль готов к использованию. Версионируйте тегами для стабильности, и коллеги смогут подключать его просто по пути на GitHub.

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

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

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍7
💻 Хватайтесь за штурвал

Вы кодите на Go, а Kubernetes написан на Go. Логично, правда? Но разворачивать поды, сервисы и ingress вручную, настраивать деплоймент и автоскейлинг — это не про вас.

Пора разобраться как работать с пайплайнами и самостоятельно деплоить своё приложение 👉 @devopsslib

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

🐸 Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1
Оркестрация агентов сложнее, чем оркестрация горутин

Но принцип похож: множество независимых акторов, общающихся по протоколам. В 2026 году мультиагентные системы (Multi-Agent Systems) станут стандартом бэкенда.

Мы обновили курс «Разработка AI-агентов», добавив туда всё, что нужно для построения высоконагруженных интеллектуальных систем.

Tech Stack Update:

Protocols: Глубокий разбор MCP (Model Context Protocol) и A2A коммуникации.
Workflow: LangGraph для построения сложных стейт-машин (почти как конечные автоматы, но для LLM).
Ops: AgentOps, мониторинг и деплой.

Старая версия была «игрушечной». Новая — про Production и инфраструктуру (даем доступ к GPU).

🎁 Deal:

Берешь курс по агентам (пока актуально к 2026) — получаешь два курса в подарок. Например, математику и алгоритмы.

Deploy here
4👾1
ℹ️ Дайджест недели

Не устану напоминать, что до Нового Года осталось немного. Новый Год не остановит подборку материалов недели.

Зачем в Go errors.Is и errors.As

Самоподписанный HTTPS для Go

Go 1.26 RC1

TinyGo 0.40.0

Почитать:

Карьерная «страховка» для IT‑шника

15 AI-инструментов для поиска работы в IT за рубежом

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

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

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🧹 Чистим JSON

Тэг omitzero убирает поля со значениями по умолчанию из JSON. Раньше использовали omitempty. Он пропускает поля, если они пустые: строка без символов, слайс без элементов или nil. Но для чисел и дат проблема. Нулевое значение int или time.Time всегда попадало в JSON, даже если данных нет.

omitzero решает это. Поле пропускается при нулевом значении типа: 0 для int, false для bool, пустая строка. Для time.Time не нужно делать указатель. Пример:
type User struct {
Name string `json:"name,omitempty"`
Age int `json:"age,omitzero"`
DOB time.Time `json:"dob,omitzero"`
}

u := User{Name: "Алексей"}
json, _ := json.Marshal(u)
// {"name":"Алексей"}


Можно комбинировать теги: json:"field,omitempty,omitzero". Если тип реализует IsZero(), то omitzero использует его логику.

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

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

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
19👍9🤔2👾1
🔄 go fix в Go 1.26

go fix и go vet теперь на одной базе, но разные цели. Vet ловит баги, fix безопасно модернизирует синтаксис. Запуск go fix . применит все анализаторы автоматически от any вместо interface{} до wg.Go вместо Add/Done.

➡️ В статье подробнее про все анализаторы и примеры кода.

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

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

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍1😁1