Category : golang

golang
Регламент для работы с ошибками в Go

Ошибки в приложениях неизбежны, но мы можем их смягчить и упростить отладку. Но как выбрать правильный способ обработки?В этой статье предлагаю разобраться, как организовать работу с ошибками в Go так, чтобы они не просто сигнализировали о проблеме, но и помогали быстро её локализовать, воспроизвести и устранить. Рассмотрим инструменты и ограничения Go, обсудим подходы к обработке ошибок, а в финале сформулируем регламент, который поможет выбрать оптимальный способ работы с ошибками в разных сц…

  • четверг, 29 мая 2025 г. в 00:00:10
golang
Соглашение по обработке ошибок

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

  • вторник, 27 мая 2025 г. в 00:00:06
golang
Прощай error-hell: альтернативная обработка ошибок

В эпоху становления асинхронного программирования JavaScript-разработчики столкнулись с явлением, получившим название "callback-hell" — бесконечной вложенностью функций обратного вызова. Хотя с точки зрения функционального программирования функции являются полноправными гражданами первого класса, принцип "всё хорошо в меру" никто не отменял. Появление Promise и механизма async/await стало спасительным решением этой проблемы. В мире Go у нас есть более элегантные инструменты — к…

  • суббота, 24 мая 2025 г. в 00:00:08
golang
Эти сложные map & slice в GO

В этой статье я хочу погрузиться в то, как работают некоторые структуры (далее ниже) в ГО. Хотя я и работаю с ГО уже 3й год, все равно есть вещи, в которые интересно погружаться. Хочу отметить, что я не буду погружаться прям сильно в реализацию того как устроены map и slice, скорее на столько, что бы понимать как они ведут себя и почему. Такое часто могут спрашивать на собеседованиях или это поможет писать более качественный и безопасный код.Итак на сколько мы знаем (я надеюсь, что и вы читаете…

  • суббота, 24 мая 2025 г. в 00:00:07
golang
Еще один вариант структуры go-приложения

Наверняка вам уже не раз попадалась на глаза статься, в которой рассказывают о том, какие пакеты и файлы нужно создать в вашем проекте, чтобы код получился легко расширяемым и поддерживаемым. Эта еще одна статья такого рода, посвященная декомпозиции проекта go на минимально зависимые друг от друга части. В качестве движущих сил декомпозиции будут использоваться следующие известные практики:архитектура слоев;предметно-ориентированное проектирование (DDD);разделение команд и запросов (CQS);архите…

  • пятница, 23 мая 2025 г. в 00:00:09
golang
Строки(strings) в Go

Строки — одна из самых часто используемых структур данных в любом языке программирования. И в Go они повсюду: от простых приветствий вроде "Hello, World!" до сложных парсеров, логгеров и сетевых протоколов. На первый взгляд, с ними всё просто: создал, склеил, обрезал — и пошёл дальше. Но как это часто бывает, под простотой скрываются тонкости, игнорирование которых может привести к ошибкам и снижению производительности.Go предлагает удобные, но специфичные механизмы работы со строками. …

  • пятница, 23 мая 2025 г. в 00:00:08
golang
Возвращаюсь к работе мозгом после месяцев кодинга с LLM

TLDR: LLM неплохо справляются с кодингом, но в больших проектах они пишут запутанный сумбур. Я уменьшил объём использования ИИ при кодинге и вернулся к работе головой, ручке и бумаге.Несколько месяцев назад мне нужно было создать новую инфраструктуру для моего SaaS, потому что связка из PHP+MySQL перестала отвечать нашим требованиям. Мне не терпелось воспользоваться этой возможностью, чтобы максимально задействовать все новые LLM, с которыми я экспериментировал. Поэтому я временно отказался от …

  • среда, 21 мая 2025 г. в 00:00:14
golang
Go-микросервисы: Стандартизация архитектуры с Clean Architecture и DDD

Рисунок 0. Как я писал статью на ХабрВведение: Проблемы современных Go-проектовВ Go-экосистеме сложилась парадоксальная ситуация: при наличии множества руководств по структуре проектов, разработчики продолжают сталкиваться с системными проблемами:Проблема внутреннего монолита. Кажущаяся модульность разбивается о практику размещения всей логики в internal/, где:73% проектов смешивают доменную логику с инфраструктурой (данные CodeScene 2023).Среднее время поиска нужного компонента превышает 15 ми…

  • среда, 21 мая 2025 г. в 00:00:13
golang
Мое автопротоколирование, начало создания полноценного сервиса

ДисклеймерВсем привет! В данной статье я поделюсь своим опытом написания сервиса. Я не являюсь опытным или профессиональным разработчиком, я пишу свой проект и мои решения могут быть не самыми оптимальными. Эта статья состоит в основном из ошибок, которые я совершил. Мой путь не является правильным и потому - судите "строго".Создание структуры проектаПервое, что приходит в голову при создании своего проекта, это как правильно организовать работу всего приложения, что с чем должно взаимо…

  • среда, 21 мая 2025 г. в 00:00:12