Библиотека Go-разработчика | Golang
Все самое полезное для Go-разработчика в одном канале. Учиться у нас: clc.to/qaSdww По рекламе: @tproger_sales_bot Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a4a8c24689c2151c752af0 Заявка: 8137752389
نمایش بیشتر📈 تحلیل کانال تلگرام Библиотека Go-разработчика | Golang
کانال Библиотека Go-разработчика | Golang (@goproglib) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 23 990 مشترک است و جایگاه 5 503 را در دسته فناوری و برنامهها و رتبه 27 265 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 23 990 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 26 اکتبر, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -85 و در ۲۴ ساعت گذشته برابر -11 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 19.46% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 7.25% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 4 668 بازدید دریافت میکند. در اولین روز معمولاً 1 740 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 5 است.
- علایق موضوعی: محتوا بر موضوعات کلیدی مانند навигация, лучшее_из_библиотеки_2025, git, string, golive تمرکز دارد.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“Все самое полезное для Go-разработчика в одном канале.
Учиться у нас: clc.to/qaSdww
По рекламе: @tproger_sales_bot
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/67a4a8c24689c2151c752af0
Заявка: 8137752389”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 27 اکتبر, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
در حال بارگذاری دادهها
| تاریخ | رشد مشترکین | اشارات | کانالها | |
| 26 اکتبر | 0 | |||
| 25 اکتبر | +1 | |||
| 24 اکتبر | +3 | |||
| 23 اکتبر | +2 | |||
| 22 اکتبر | +8 | |||
| 21 اکتبر | +5 | |||
| 20 اکتبر | +3 | |||
| 19 اکتبر | +5 | |||
| 18 اکتبر | +3 | |||
| 17 اکتبر | +6 | |||
| 16 اکتبر | +5 | |||
| 15 اکتبر | +2 | |||
| 14 اکتبر | +10 | |||
| 13 اکتبر | +8 | |||
| 12 اکتبر | +13 | |||
| 11 اکتبر | +11 | |||
| 10 اکتبر | +7 | |||
| 09 اکتبر | +8 | |||
| 08 اکتبر | +4 | |||
| 07 اکتبر | +2 | |||
| 06 اکتبر | +12 | |||
| 05 اکتبر | +6 | |||
| 04 اکتبر | +6 | |||
| 03 اکتبر | +3 | |||
| 02 اکتبر | +5 | |||
| 01 اکتبر | +4 |
| 2 | Fuzzing нашёл ошибку. Сохраните вход вместе с исправлением
Обычный go test запускает fuzz-тест на исходном корпусе: входах из f.Add и файлов testdata/fuzz. Новые входы в этом режиме не генерируются. Активный поиск нужно включить отдельно.
Если в пакете один fuzz-тест, короткий запуск выглядит так:
go test -fuzz=. -fuzztime=10s
Если их несколько, вместо точки задайте регулярное выражение, которое выбирает ровно один. Движок меняет входы и использует покрытие кода, чтобы находить новые пути выполнения. Но проверяемое свойство задаёт автор теста. Например, после кодирования и обратного декодирования должны получиться исходные данные.
При сбое Go пытается уменьшить вход, сохранив ошибку, и записывает его в подкаталог testdata/fuzz с именем теста. Путь и команду точечного повторного запуска он выводит в терминал.
После исправления запустите go test и добавьте найденный файл в репозиторий вместе с кодом. Этот вход станет регрессионной проверкой и будет выполняться без нового fuzzing-запуска. А вот интересные входы из кеша $GOCACHE/fuzz используются только при активном поиске.
Десять секунд без падений не доказывают отсутствие ошибок. Сам fuzz-target должен быть быстрым, детерминированным и не зависеть от изменяемого глобального состояния.
Как Go хранит корпус и воспроизводит сбои
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика | 1 403 |
| 3 | 📌 Один курс — хорошее вложение в себя. Два по той же цене — ещё лучше.
В Proglib Academy действует акция: покупаешь один курс, а второй получаешь в подарок.
Например, можно совместить два направления по работе с ИИ:
💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью.
💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.
📍 Разница в цене — почти 50 тысяч рублей. Можно освоить больше, не выходя за рамки запланированного бюджета.
А если тебе интереснее Python, алгоритмы, backend или DevOps — выбирай другую пару курсов из каталога.
Акция действует до 31 октября включительно ⏳
⏮️ Пора прокачать свой стек | 1 856 |
| 4 | Тест упал. Покажите, что именно разошлось
Два больших объекта в логе приходится сравнивать глазами. cmp.Diff(want, got) из go-cmp показывает различия, в том числе во вложенных структурах. Пустая строка означает, что значения равны по выбранным правилам.
Мини-пример для файла tags_test.go. Здесь разные вторые элементы, поэтому тест намеренно падает:
package example
import (
"testing"
"github.com/google/go-cmp/cmp"
)
func TestTags(t *testing.T) {
want := []string{"go", "sql"}
got := []string{"go", "http"}
diff := cmp.Diff(want, got)
if diff != "" {
t.Errorf("tags mismatch (-want +got):\n%s", diff)
}
}
При таком порядке аргументов строки с - относятся к ожидаемому значению, с + — к полученному. Сам формат diff нестабилен: он для чтения человеком, а не для парсинга.
Правила равенства тоже часть теста. По умолчанию nil и пустой слайс различаются. Опция cmpopts.EquateEmpty() уравнивает слайсы и map нулевой длины, но добавлять её стоит только тогда, когда API действительно не различает эти состояния. Неэкспортируемые поля без подходящего правила сравнения могут вызвать панику.
cmp.Diff • EquateEmpty
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика | 1 995 |
| 5 | singleflight: один запрос к источнику вместо одинаковых параллельных
Кеш опустел, и несколько обработчиков одновременно пошли за одним товаром в БД. Пока первый запрос ещё работает, остальные повторяют ту же работу. Для такой ситуации есть golang.org/x/sync/singleflight.
Вызов Group.Do(key, fn) объединяет обращения с одинаковым ключом: выполняется одна функция, остальные ждут и получают её результат вместе с ошибкой. Ключи разные — работа идёт независимо. Все обработчики должны использовать одну и ту же Group, а не создавать её заново на каждый запрос.
Ключ описывает всё, от чего зависит результат. Если данные различаются между арендаторами, одного ID товара мало. Например, tenant:42:product:7 отделяет его от такого же товара другого арендатора.
Готовый результат singleflight не хранит: следующий вызов после завершения работы снова запустит функцию. Механизм действует внутри одного процесса и не ограничивает общее число запросов по разным ключам. А флаг shared сообщает, что результат получили несколько вызовов, а не что сработал кеш.
Документация singleflight
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика | 2 230 |
| 6 | 💾 Команда Dolt ускорила WAL сочетанием fdatasync и записи нулей
Заменить fsync на fdatasync оказалось недостаточно. Команда Go-базы Dolt также стала заранее записывать 4 МиБ нулей при расширении журнала. Следующие записи перезаписывают готовую область, реже требуя синхронизации метаданных.
Во внутренних тестах небольших последовательных записей это дало 10–40% прироста. Помогло сочетание Ext4 и сетевого диска с заметной задержкой, но свободной пропускной способностью.
На Btrfs и OpenZFS такого выигрыша не увидели. А предварительная запись нулей увеличивает объём записи — вплоть до двух раз. При упоре в пропускную способность оптимизация может навредить.
Полезный разбор для тех, кто пишет хранилища и журналы на Go. На дату статьи изменение было в main, но ещё не вошло в релиз Dolt.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика | 2 459 |
| 7 | 😎 Выбираешь один курс, второй получаешь бесплатно. Баг? Нет, акция!
До 31 октября в Proglib Academy можно выбрать два курса и заплатить только за один.
Например, можно совместить:
💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью.
💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.
Вместе курсы стоят 108 000 ₽, но по акции оба обойдутся в 59 000 ₽. Экономия — 49 000 ₽ 🔥
Интересуют Python и ИИ или алгоритмы и архитектура? Можно выбрать любые два курса из каталога.
Акция действует до 31 октября включительно ⏳
⏬ Собрать свой учебный билд | 2 475 |
| 8 | ⚙️ Go 1.27 открывает SIMD-инструкции ARM и WebAssembly без ассемблера
Переносимый SIMD скрывает различия процессоров. Но для специфических операций есть более низкий уровень — экспериментальный simd/archsimd.
В Go 1.27 к amd64 добавились arm64 и wasm. Эксперимент включается при сборке:
GOEXPERIMENT=simd go build
При переносе алгоритма важны крайние случаи. Например, PermuteOrZero на amd64 и LookupOrZero на ARM/wasm по-разному обрабатывают индексы вне диапазона. Поэтому похожие операции получили разные имена.
Это инструмент для измеренных горячих участков: обработки байтов, чисел и векторов. Проверки доступности инструкций и запасной путь остаются частью реализации. API экспериментальный; обычные циклы от включения флага автоматически не векторизуются.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика | 2 637 |
| 9 | 🛠 gopls спрашивает, какие теги добавить полям структуры
Раньше действие Add struct tags добавляло json-теги в camelCase. Теперь gopls умеет уточнять параметры: например, выбрать json,yaml,db и snake_case.
Ставите курсор на структуру, вызываете действие, отвечаете на два вопроса — сервер генерирует теги для её полей. При удалении тоже можно выбрать конкретные ключи, сохранив остальные.
Для интерактивной работы команда рекомендует gopls 0.24.0 и Go-расширение VS Code 0.56.0. Одного обновления сервера недостаточно: редактор должен поддерживать новые диалоги.
В статье показаны и другие сценарии, но их статус различается. Перенос объявлений демонстрируется как preview, а изменение сигнатуры пока в планах. Проверяйте доступность нужного действия, прежде чем рассчитывать на него в рабочем процессе.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика | 2 915 |
| 10 | 🌐 Go 1.27: закрыли Body — соединение ещё пригодится
Клиенту нужен только статус ответа, поэтому тело он не читает. До Go 1.26 включительно вызов resp.Body.Close() в таком HTTP/1-запросе приводил к закрытию соединения. Следующий запрос снова платил за TCP и TLS.
В Go 1.27 Transport после Close асинхронно дочитывает ненужное тело: не более 256 КиБ и не дольше 50 мс. Если успеет, соединение можно использовать повторно. При Connection: close дочитывание пропускается.
🔴 Даже успешный JSON Decode не всегда читает тело до конца: после объекта может остаться перевод строки. Для HTTP/1 это тоже мешало повторному использованию соединения.
Команда Go теперь рекомендует просто закрывать Body, когда оно больше не нужно. Повторное использование не гарантируется: действуют лимиты дочитывания и условия соединения. HTTP/2 использует отдельные потоки, поэтому такого дочитывания не требует.
➡️ Как это устроено в net/http
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика | 3 253 |
| 11 | 🔎 ReverseProxy: заголовок добавили, а backend его не увидел
Прокси записывает X-App-User в Director. Клиент присылает Connection: X-App-User — и до backend заголовок уже не доходит.
Причина в порядке обработки: hop-by-hop заголовки удаляются после вызова Director. Клиент может перечислить их в Connection, включая поле, которое добавил сам прокси.
С Rewrite порядок другой: сначала очистка, затем callback. Добавленный в r.Out.Header заголовок сохраняется. Менять входящий r.In нельзя.
В локальном тесте backend получил пустую строку с Director и proxy-user с Rewrite. Оба сценария — на Go 1.27.2. В текущей документации Director помечен устаревшим, для нового кода рекомендуется Rewrite.
➡️ Порядок обработки ReverseProxy
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика | 3 300 |
| 12 | 🔎 go test запускает и код зависимостей
Загрузка Go-модуля не выполняет его init(). Но когда зависимость импортирована в тестовый бинарник, её инициализация запускается до тестов — с доступом к окружению процесса.
Жюль Робино проверил это на собственной тестовой зависимости: при сборке она молчала, а во время go test её init() прочитал переменные окружения.
🔴 Если тестовый job получает ключ деплоя, импортированная зависимость тоже может к нему обратиться. Автор предлагает разделять тесты и публикацию, выдавая каждому job только нужные полномочия.
Проверять стоит и новые зависимости. govulncheck ищет известные уязвимости, а capslock показывает возможности кода и пути вызовов: доступ к сети, файлам, запуск процессов. Неожиданная возможность — повод изучить её использование.
Контрольная сумма подтверждает целостность модуля, но сама по себе не доказывает безопасность его поведения.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика | 3 236 |
| 13 | 🧪 Зелёный тест ещё нужно проверить
Функция IsSorted должна отличать отсортированный слайс от неотсортированного. Один тест на [1, 2, 3] пропустит реализацию, которая всегда возвращает true.
В разборе TDD на Go Джон Арундел сначала пишет тест и минимальную реализацию с return false. Тест компилируется и падает: теперь видно, что он реагирует на эту ошибку.
Затем автор добавляет неотсортированный вход и постепенно расширяет набор случаев. Повторяющиеся числа проверяют допустимость равных соседей, отрицательные — ошибочную начальную границу, пустой слайс — обращение к несуществующему элементу.
🔴 Каждый найденный баг сначала получает падающий тест, затем исправление. Зелёный прогон показывает соответствие проверенным случаям; полноту набора нужно оценивать отдельно.
Самописная IsSorted здесь служит упражнением по TDD.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика | 3 168 |
| 14 | 💡 slog: убираем секретный атрибут до записи лога
Токен не должен попадать в лог, но приходит вместе с остальными полями запроса. У стандартных JSONHandler и TextHandler есть HandlerOptions.ReplaceAttr: callback преобразует атрибут перед записью.
Возврат пустого slog.Attr{} удаляет поле. Фильтр на карточке убирает access_token и внутри группы auth, сохраняя соседний user. Названия открытых групп доступны в аргументе groups.
🔴 Этот пример проверяет имя ключа. Если секрет уже вставлен в текст сообщения, например token=demo-secret, он останется в msg. Передавайте чувствительные данные отдельными атрибутами и продумывайте фильтр для своей схемы логов.
➡️ Документация ReplaceAttr
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика | 3 325 |
| 15 | 🧑💻 Какие навыки помогают вам в разработке в 2026 году?
Что вы чаще используете в работе? В каких задачах помогает ИИ, а где проще справиться самостоятельно?
Мы решили собрать портрет современного разработчика — и приглашаем вас поделиться своим опытом. Расскажите, какие навыки вам пригодились и как вы используете ИИ. Если обходите его стороной, нам тоже интересно узнать почему.
Опрос анонимный и займёт около 5 минут. Результаты опубликуем в общем большом исследовании.
👉 Пройти опрос | 2 819 |
| 16 | 🧪 Тестируем файловый код без временных каталогов
Функция читает файлы? Если она принимает fs.FS, в тест можно передать fstest.MapFS: пути и содержимое задаются прямо в map. Родительские каталоги создаются в этой модели автоматически.
В примере на карточке два файла. banner.txt читается как hello, а отсутствующий путь возвращает ошибку, которую можно проверить через errors.Is(err, fs.ErrNotExist).
fstest.TestFS проверяет поведение файловой системы и наличие перечисленных файлов. Содержимое и логику вашей функции нужно проверять отдельно.
🔴 Не меняйте map одновременно с файловыми операциями: это data race. Для большой файловой системы такая модель неудобна — обход каталогов перебирает всю map.
➡️ MapFS и TestFS в документации
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика | 3 588 |
| 17 | 🔄 NATS 2.15: перенос потока JetStream можно отменить
Поток JetStream уже переносится между узлами, а план размещения изменился. В NATS 2.15 появился отдельный API для отмены такого переноса:
$JS.API.STREAM.CANCEL_MOVE
Операция возвращает поток к исходному размещению. Новый механизм согласования желаемого состояния также делает безопаснее изменения размещения и числа реплик во время переноса.
🔴 Для обслуживания узлов добавили API эвакуации потоков и их consumers. Это позволяет перенести данные и состояние перед работами на сервере.
Изменения полезны командам, чьи Go-сервисы используют JetStream для устойчивого обмена сообщениями. Перед обновлением проверьте совместимость с 2.14: у релиза есть отдельное руководство по переходу.
➡️ Новые API и изменения NATS 2.15
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика | 3 680 |
| 18 | 🛠 garble 0.18: меньше сведений об исходнике в Go-бинарнике
Go-бинарник сохраняет имена и другую информацию, полезную для диагностики. garble меняет сборку так, чтобы извлечь из неё сведения об исходном коде было сложнее.
Версия 0.18 поддерживает Go 1.27; поддержка Go 1.26 в ней убрана.
По оценке авторов, сборка ускорилась на 10–15%: подготовка изменённого линкера теперь идёт параллельно со сбором списка пакетов.
🔴 Экспериментальная обфускация потока управления стала воспроизводимой при заданном -seed и поддерживает больше конструкций языка.
Обычная команда:
garble build ./...
Флаг -tiny удаляет ещё больше диагностической информации, но усложняет разбор аварий: сообщения panic и стектрейсы не печатаются.
➡️ Изменения и исправления garble 0.18
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика | 3 661 |
| 19 | 📦 klauspost/compress 1.20: LZW и Microsoft XPRESS
В библиотеке klauspost/compress появились два дополнения для работы с форматами сжатия:
— чтение и запись LZW;
— распаковка Microsoft XPRESS, описанного в MS-XCA.
Это пригодится, когда Go-сервис получает данные из внешней системы и формат уже задан источником.
🔴 В том же релизе добавили ассемблерные кодировщики S2 для arm64 и обновили низкоуровневые реализации zstd и huff0. Для xxhash ограничили объём обработки в непрерываемом ассемблерном участке.
Если библиотека стоит на горячем пути, сравнивайте версии на собственных данных: размер блоков, повторяемость содержимого и архитектура CPU влияют на результат.
➡️ Список изменений версии 1.20.0
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика | 3 769 |
| 20 | 👀 Как вы смотрите видео?
Разбираете урок, слушаете интервью фоном или начинаете на телефоне, а продолжаете на большом экране?
Хотим узнать, что делает просмотр удобным для вас. Вспомните последнее видео — ролик, урок, фильм или серию сериала — и расскажите о своём опыте. Если детали не запомнились, можно так и ответить.
🕰️ Опрос займёт около 3 минут.
В результатах сможете сравнить свои привычки с ответами других участников. А разработчики и инженеры видеоплатформы расскажут, что происходит по ту сторону экрана, пока вы смотрите видео.
🔗 Поделиться опытом
🐸 Библиотека программиста | 2 978 |
