Category : golang

golang
Топ 5 возможностей Gin, которые должен знать каждый Go-разработчик

Команда Go for Devs подготовила перевод статьи о скрытых возможностях Gin-фреймворка. Даже если вы давно пишете API на Go, в арсенале Gin есть несколько приёмов, которые сделают ваш код быстрее, надёжнее и проще в сопровождении. От кастомных валидаторов до graceful shutdown — фишки, о которых знают не все. При создании веб-API на Go, фреймворк Gin часто становится первым выбором благодаря своей скорости и простоте. Большинство разработчиков знакомы с его базовыми возможностями, но у Gin есть и …

  • среда, 10 сентября 2025 г. в 00:00:11
golang
Как мы выследили регрессию использования памяти в продакшен-сервисах на Go 1.24

Команда Go for Devs подготовила перевод статьи о том, как команда инженеров выявила регрессию использования памяти в Go 1.24. Оказалось, что всего одна оптимизация в аллокаторе памяти, случайно потерянная при рефакторинге, заставляла Go «съедать» сотни мегабайт RAM. Но сообщество Go-разработчиков быстро нашло и устранило проблему.Когда в начале 2025 года вышел Go 1.24, мы с энтузиазмом начали раскатывать его на наши сервисы. Главная новинка — новая реализация map на основе Swiss Tables — обещал…

  • вторник, 9 сентября 2025 г. в 00:00:10
golang
Часть вторая. Как я пытался засунуть gRPC в браузер — продолжение

Предыдущая частьКартина мира: почему браузер — главный блокер для «настоящего» gRPCЕсли коротко, gRPC живёт поверх HTTP/2 и активно полагается на стримы. А в браузере до сих пор нет низкоуровневого API, который позволил бы JavaScript управлять HTTP/2‑стримами на том уровне, который нужен gRPC. Даже unary‑вызов в gRPC — это частный случай стрима: открыли поток, отдали запрос, забрали ответ, закрылись. Пока браузеры не дадут этот «рычаг», все WEB‑решения — это компромиссы разной степени изящности…

  • вторник, 9 сентября 2025 г. в 00:00:09
golang
if err != nil: почему мы (не) любим обработку ошибок в Go? Обзор предложений по её улучшению

Привет, Хабр! Меня зовут Павел Агалецкий, я ведущий инженер в платформе Авито. Эта статья на одну из самых холиварных тем, о которой вы могли слышать или читать множество раз. При обсуждении Go, особенно новичками или представителями других языков программирования, камнем преткновения обычно становится проверка ошибок — if err != nil. Рассказываю, какие есть особенности и нюансы, сравниваю обработку ошибок в Go и других языках. Говорим о подходах к изменению обработки ошибок и обсуждаем последн…

  • вторник, 9 сентября 2025 г. в 00:00:08
golang
Миша — консольный SSH клиент

ПредысторияУ меня появилось желание изучить go и написать на нем какой-нибудь open-source проект, изначально идей и проблем которые я мог решить в голове не былоНа работе часто приходилось подключаться на несколько разных машин за рабочий день - доступы к ним лежали в разных чатах, файлах и тдДанная ситуация очень сильно меня напрягала, что приходилось тратить большое кол-во времени на то, чтобы найти правильные доступы, где-то было подключение по паролю, где-то по ключу и из-за этого данный пр…

  • воскресенье, 7 сентября 2025 г. в 00:00:06
golang
Как превратить SQL в API на Go?

Команда Go for Devs подготовила перевод статьи о том, как превратить SQL в полноценный API прямо в Go. Автор показывает, как можно безопасно принимать WHERE-условия в виде SQL-подзапросов, валидировать их и использовать для запросов к базе. Просто, элегантно и почти без лишнего кода.Вашему API нужно поддерживать запросы, которые слишком сложны для простого CRUD, но при этом недостаточно хитрые, чтобы оправдать использование GraphQL? Попробуйте принять ограниченный набор SQL-условий WHERE, реали…

  • суббота, 6 сентября 2025 г. в 00:00:08
golang
Оптимизация памяти в Go: 20 приёмов для эффективных приложений

Команда Go for Devs подготовила перевод статьи о том, как оптимизировать использование памяти в Go-приложениях. Автор делится двадцатью приёмами — от выбора ресивера метода и правильной инициализации slice до кастомного управления памятью и профилирования с pprof. TL;DR: мелкие улучшения складываются в заметный прирост производительности и стабильности.Как разработчик на Go, я провёл бесчисленные часы, оптимизируя использование памяти в своих приложениях. Это критически важная часть создания эф…

  • пятница, 5 сентября 2025 г. в 00:00:14
golang
Как спроектировать кэш-библиотеку нового поколения и не умереть?

Всем привет! Меня зовут Алексей Майшев, я работаю Go-инженером в Авито. В этой статье рассказываю, как мы с командой независимых разработчиков 9 месяцев проектировали и разрабатывали кэш-библиотеку следующего поколения для Go — otter. Вы узнаете, чем нас не устроили текущие кэш-библиотеки в Go, какие подходы и оптимизации мы рассматривали и на каких остановились, как замеряли производительность и потребление памяти и в чём otter превосходит конкурентов. А ещё тут будет много теории — в процессе…

  • пятница, 5 сентября 2025 г. в 00:00:13
golang
Как проверить время и асинхронный код в Go

Команда Go for Devs подготовила перевод статьи о пакете synctest, который с Go 1.25 стал частью стандартной библиотеки. Он позволяет писать быстрые и надёжные тесты для конкурентного кода, не усложняя сам код. Теперь асинхронные операции можно проверять без долгих ожиданий и флаки-тестов.В Go 1.24 мы представили пакет testing/synctest как экспериментальный. Этот пакет может заметно упростить написание тестов для конкурентного и асинхронного кода. В Go 1.25 пакет testing/synctest вышел из стадии…

  • четверг, 4 сентября 2025 г. в 00:00:09