
Go *
Компилируемый, многопоточный язык программирования
Эволюция JSON в Go: от v1 к v2

Вторая версия пакета json
, которая появится в Go 1.25 (август 2025) — большое обновление с множеством несовместимых изменений. В v2 добавили новые возможности, исправили ошибки в API и поведении, а также улучшили производительность. Давайте посмотрим, что изменилось!
Разбираемся в сборщике мусора Go: просто и с гофером

Разбираемся в сборщике мусора Go: просто и с гофером
Я решил написать эту статью в первую очередь для себя, потому что перечитал кучу материалов про сборщик мусора (GC) в Go, и почти все они были слишком сложными. Моя цель — объяснить, как работает GC, что такое инкрементальность и барьер записи, так, чтобы я сам понял и запомнил и, возможно, стал полезным для других. А чтобы было веселее, я добавил гофера — маскота Go — в забавных иллюстрациях, которые помогут визуализировать идеи. Если вы, как и я, хотите разобраться в GC без лишней головной боли, эта статья для вас!
Ускоряем валидацию UTF-8 в 10 раз (>10 ГБ/с): реализация алгоритма Lemire-Keiser на Go с ARM NEON

UTF-8 валидация — одна из базовых операций при работе с текстом, которая выполняется миллионы раз в секунду в современных приложениях. Стандартная реализация в Go, хоть и корректная, далека от оптимальной по производительности. В этой статье расскажу, как мне удалось ускорить валидацию UTF-8 в 10 раз, используя SIMD‑инструкции ARM NEON и алгоритм из статьи «Validating UTF-8 In Less Than One Instruction Per Byte» Джона Кейзера и Дэниела Лемира.
Жонглирование памятью: арены в Golang

Интересовались ли вы как работают арены изнутри? Или их использование, для чего применяются и их плюсы... В данной статье мы разберем основные аспекты арен в Golang...
Большой разбор Слайсов Go -> «Типы и структуры данных Go»

Представляю вам первую статью из цикла «Типы и структуры данных Go»! Здесь мы познакомимся со cлайсами, разберем внутреннюю реализацию этого типа и его вспомогательных функций. Говорить будем только о том, что есть в базе языка, то есть без дополнительных функций из стандартной, экспериментальной или какой-либо другой библиотеки.
Приятного аппетита!
Условная буферизация логов в Go

Условная буферизация логов в Go: как сократить расходы на логирование на 95% без потери контекста ошибок.
[ПРОБЛЕМА]
1M запросов → 10M логов → 💸
[РЕШЕНИЕ]
Буфер → Анализ → Решение
↓
Сохранить только нужные
[РЕЗУЛЬТАТ]
95% экономии + полный контекст ошибок
Практический гайд по авторизации и аутентификации в микросервисах с Ory и Apache APISIX

Мне кажется, что уже есть сотни разных статей на эту тему, но каждый раз мне чего-то не хватало. Поэтому я решил написать свою статью, в которой покажу, как я реализую авторизацию и аутентификацию в своих проектах. Это именно гайд: вы можете взять готовый код и адаптировать его под свои нужды. В рамках статьи будут использоваться Ory Hydra и Ory Kratos, Apache APISIX в качестве API Gateway и несколько микросервисов на Golang. Всё это будет работать в Docker, чтобы вы могли легко запустить и поиграться.
Каскадная отмена контекстов в Go: от исходного кода до производственных паттернов

Как глубже работает контекст с отменой и как же его использовать, давайте рассмотрим ближе этот пакет, который знаком каждому Go разработчику...
Почему Go такой странный, и ещё 8 холиварных тем про Golang
Привет, Хабр! Это Вадим из команды AvitoTech. Весной мы собрали в московском офисе более сотни разработчиков, чтобы обсудить самые актуальные для Go-комьюнити темы: начиная со сложностей при переходе на язык Go и заканчивая извечным вопросом о пользе хард- и софт-скиллов. Выбрали девять самых «горячих» тем, поговорили с модераторами соответствующих дискуссий дринкапа, выделили главное и принесли вам в этой статье. Призываем ваши мнения в комментарии!
Rattle: узнаём об ошибках в Docker раньше, чем сообщит клиент

Контейнеры падают, а вы узнаёте об этом постфактум? Ошибки в логах проходят мимо?
Собрал Rattle за три дня — простой self-hosted инструмент, который отправляет события из Docker в Telegram. Без лишних панелей, без сложной настройки — просто работает и сообщает о самом важном.
В статье рассказываю, зачем он мне понадобился, как устроен внутри и как можно быстро развернуть его у себя. Покажу Telegram Mini App, через которую удобно управлять уведомлениями.
📎 Ссылка на репозиторий: github.com/rattle-bot/rattle
Тестируемый код в Golang

Когда я вижу очередную статью или видеоурок про тестирование кода, я почти уверен, что мне опять расскажут про моки.
Создаётся впечатление, что это самый лучший и правильный способ писать тесты, и вообще, невозможно обойтись без моков. Это не так! Можно писать тестируемый код без моков. Более того, использование моков следует избегать и использовать их только в специфичных случаях.
10 непривычных моментов в Go для Java разработчика

Несколько лет назад я начал добавлять Go в свой арсенал языков (будучи на тот момент Java разработчиком). Мне было очень непривычно. Более того, я принял язык не с первой попытки. Причём пришлось принять его больше из-за сложившихся обстоятельств, чем по собственному желанию.
Но прошло время, Go стал моим основным языком и, рискну сказать, любимым. В статье ниже расскажу, почему язык казался мне непривычным, какие парадигмы мне пришлось поменять в своей голове и почему во многом это оказалось более эффективно.
Уточню: статья ориентирована больше на тех, кто планирует перейти в Go, чем для опытных разработчиков.
Ближайшие события
7 шаблонов конкурентности в Go, которые вам стоит знать

Конкурентность — одна из самых мощных возможностей Go, и её освоение критически важно для создания масштабируемых и эффективных приложений. В этой статье мы рассмотрим 7 шаблонов конкурентности в Go, которые помогут вам писать надёжный код.
Как привинтить Python к Go
Здравствуйте,
Меня зовут Александр Певзнер, и я программирую на Си и Go. Go обычно ассоциируется с бакендом, микросервисами и вот этим вот всем. Но я использую его необычным образом: я пишу на нём системное ПО.
Почему я это делаю именно на Go? Этот язык привлекает меня своей простотой, лаконичностью, ясной семантикой, прекрасной документацией и великолепной стандартной библиотекой.
Одна из моих программ, ipp-usb, написанная на Go, входит во все дистрибутивы Linux и *BSD и делает возможным использование принтеров и сканеров, которые подключаются к USB и поддерживают IPP over USB протокол - т.е., примерно всех современных.
А еще я член OpenPrinting - небольшой, но очень плодотворной группы людей, которая ответственна за печать и, отчасти, сканирование на всех UNIX-like OS и за формирование индустриальных стандартов в этой области.
Это всё начиналось для меня, как хобби, но сейчас это - часть моей оплачиваемой работы.
В силу особенностей моей работы меня не очень интересуют такие вещи, как поддержка миллиона запросов в секунду и прочий high load (это не значит, что мои программы тормозные. Но никто не дёргает системный принтер миллион раз в секунду). Но зато приходится разбираться с некоторыми другими непростыми штуками.
Об одной из таких штук и пойдёт речь в этой статье.
Понадобился мне для одного проекта на Go встроенный скриптинг. Ну т.е., чтобы программа могла всосать в себя скрипт, который определяет некоторые аспекты её поведения.
Размышляя о том, на каком языке программа должна скриптоваться, в выбирал между JS, Lua и Python.
Однако, JS и Lua - слишком нишевые языки. JS ассоциируется у всех с вебом а Lua - с разработкой игр. Таким образом, выбор естественным образом пал на Python. Этот язык знают все, а я испытываю некоторую надежду, что скрипты для моей программы буду писать не только я. Хотя сам я, должен признаться, Python не знаю и не люблю :)
Таким образом, осталось только придумать, как встроить интерпретатор Python-а в программу на Go.
net/http: Разбираем работу сервера «под капотом»
Всем привет! Эта статья посвящена всеми любимому "разбору под капотом". На этот раз мы взглянем на работу HTTP сервера в Go и разберем некоторые нюансы и ключевые механизмы. Статья будет полезна как новичкам, так и опытным разработичкам!
Разгоняем Go TLS до 100 Gbps с сервера: опыт Kinescope

Современные пользователи ожидают, что видео загрузится мгновенно, не зависнет на 47-й секунде и будет защищено от посторонних глаз. При этом большинство из них не догадывается, кто именно доставляет этот контент, и где начинается «магия» — а где инженерия.
Мы в Kinescope — те, кто эту магию делает. Видео, которое вы смотрите в интернете, вполне может идти через нашу инфраструктуру — пусть даже вы об этом не знаете. Под капотом у нас: высоконагруженные сервисы, сотни тысяч RPS, терабиты трафика и собственные технологии, написанные на Go.
О том, как мы проектируем и поддерживаем всё это, какие технические вызовы нам приходится решать, и почему HTTPS — это не просто галочка в чеклисте безопасности, — рассказываем в статье по мотивам доклада для GolangConf.
Привет, Хабр! Меня зовут Кирилл Шваков. В Kinescope мы разрабатываем B2B-решение для хранения, обработки, защиты и доставки видео через CDN. Среди наших клиентов — как небольшие стартапы, так и крупные компании. Помимо CDN, у нас, само собой, есть и собственный DNS. А главное, множество инфраструктурных самописных компонентов на Go, которые мы развиваем и поддерживаем внутри команды.
Ваш девопс не виноват, а база данных — тем более. Ищем кто жрет память с pprof на Go

Ваше приложение на Go начало тормозить. Первая мысль? Наверное, база данных медленно отвечает. Вторая? Может, сеть лагает. Мы начинаем строить догадки, добавлять кэши, оптимизировать запросы, переписывать SQL-конструкции, дергать девопсов... и часто бьем мимо цели. Мы тратим часы, а то и дни, на оптимизацию того, что и так работало нормально, в то время как настоящая проблема прячется в совершенно неожиданном месте нашего собственного кода. Знакомая боль, не правда ли? В этой статье мы разбираем как работать со встроенным профайлером в Пo.
RoadMap по Go: с нуля до middle

Всем привет!
В последнее время мои знакомые стали меня часто спрашивать, как вкатиться в разработку на Go, и каждому я отвечал +- одно и то же, скидывал +- одни и те же материалы, которыми пользовался когда-то сам. И чтобы постоянно не повторяться, я решил составить простой и понятный алгоритм действий: «Учишь это шаг за шагом и становишься Go-разработчиком».
Автоматизация контента: как я сделал умного Tg-бота для публикации видео из VK (очередь, дедупликация, NutsDB, yt-dlp)

Здравствуйте, коллеги!
Хочу поделиться опытом проектирования и реализации production-ready Telegram-бота, который автоматически собирает и публикует свежий видеоконтент из паблика ВКонтакте — и делает это без дублей, с гарантией доставки и мемными подписями на базе OpenAI. В статье я покажу архитектуру, приведу примеры кода и расскажу о фишках, таких как очередь ссылок на видео (NutsDB), проверка на уникальность (deduplication), скачивание через yt-dlp и интеграция с OpenAI для генерации описаний.
Вклад авторов
divan0 1343.0quasilyte 855.5JustSkiv 540.0mkevac 505.0badcasedaily1 476.0AloneCoder 370.4varanio 344.6tioffs 327.0sqshq 296.0ru_vds 278.0