Category : golang

golang
Миграция с Bevy на Unity

Привет, Хабр! Я прочитал статью Migrating away from Rust и хочу поделиться с вами своими мыслями, заодно переведя оригинал. Я буду вести повествование от своего лица, поскольку это скорее реакция и размышления, а не традиционный перевод. Для меня тема весьма актуальна, так как я сам нахожусь в этом странном лагере разработки игр на нишевых движках. Я использую не Rust+Bevy, а Go+Ebitengine, но многие плюсы и минусы этих комбинаций интересно рассматривать как дополняющие друг друга. Когда-нибуд…

  • среда, 30 апреля 2025 г. в 00:00:08
golang
Advanced Goroutines Patterns в Go: Fan-out, Fan-in и Pipelines

В языке Go одним из важнейших преимуществ является мощная поддержка многопоточности и параллелизма за счёт горутин и каналов. В этой статье подробно разберём три продвинутых шаблона работы с горутинами:Fan-outFan-inPipelinesЭти паттерны позволяют писать эффективный, масштабируемый и читабельный многопоточный код.0. Как работают горутины под капотом в GO langВ примере Fan-out из статьи, распределение работы происходит следующим образом:Общий канал (jobs) используется как единая очередь задач, ку…

  • вторник, 29 апреля 2025 г. в 00:00:08
golang
Почему Big Tech тихонько уходит от Go

Хочу сразу пояснить, что я лично пишу на Go уже около 10 лет и уходить от него не планирую. Но тем не менее мне интересно мнение других разработчиков, которые работают или работали с Go на больших проектах. Во многом я согласен с недостатками Go, описанными ниже, так как сам сталкиваюсь с этими проблемами и на не самых больших проектах. Вот мой перевод статьи.1. Простота Go не справляется со сложностьюГлавное достоинство Go — его простота. Отсутствие сложных функций, сюрпризов и магии. Для небо…

  • вторник, 29 апреля 2025 г. в 00:00:07
golang
Ошибки в Go: Обработка, Обертки и Лучшие Практики

Go предлагает уникальный и прямолинейный подход к обработке ошибок, отличающийся от try-catch в других языках. Он основан на явной проверке возвращаемых значений, что требует больших проверок, но ведет к более надежному коду. Рассмотрим основы, современные инструменты пакета errors и лучшие практики. Если вам интересен процесс и вы хотите следить за дальнейшими материалами, буду признателен за подписку на мой телеграм-канал. Там я публикую полезныe материалы по разработке, Go, советы как быть …

  • понедельник, 28 апреля 2025 г. в 00:00:11
golang
Go defer: что не сказали в книгах

defer в Go — это мощный механизм для очистки ресурсов, закрытия файлов и разблокировки мьютексов. Вы наверняка слышали, что defer делает код чище и безопаснее.Когда вы открываете файл через os.Open() или os.Create(), Go выделяет ресурс операционной системы — дескриптор файла.И вот в чём важный момент:Этот дескриптор нужно обязательно закрыть через file.Close().Иначе файл останется "висеть" открытым — ресурсы будут утекать, программа начнёт захлёбываться или упадёт.Мьютекс (mutex = MUTua…

  • понедельник, 28 апреля 2025 г. в 00:00:10
golang
Golang Top 15 ошибок

Go – язык простой, но из-за кажущейся простоты многие разработчики совершают одни и те же ошибки, которые приводят к серьёзным последствиям в production. Ниже собраны 15 самых распространённых ошибок при разработке на Golang и рекомендации по их исправлению.1. Игнорирование ошибокИгнорирование ошибок приводит к скрытым багам, которые сложно найти.Неправильно:_, err := ioutil.ReadFile("config.json")Правильно:data, err := ioutil.ReadFile("config.json") if err != nil { log.Fata…

  • воскресенье, 27 апреля 2025 г. в 00:00:08
golang
Оптимизация конкурентных приложений в Go

Эпиграф в стиле А.П. Чехова по следам оригинального выступленияИван Семёныч Троицкий, программист сорока лет, застенчивый и робкий, от природы больше склонный к одиночеству, чем к публичным выступлениям, стоял в кулуарах конференции, смущённо улыбаясь и потирая ладонью вспотевший лоб. Доклад его — «Что не так с конкурентностью в Go и как с этим жить?» — принимали тепло, похлопывали по плечу и говорили:— Знатно выступил, Иван Семёныч, знатно!Однако он чувствовал, что наговорил массу пустяков. То…

  • суббота, 26 апреля 2025 г. в 00:00:13
golang
Golang: когда make, когда new

Привет, Хабр! Сегодня разберёмся, зачем в Go существуют два способа создавать значения — make и new, чем они отличаются, как они работают и когда выбирать каждый из них Что мы вообще создаём в GoЧтобы понимать разницу между make и new, нужно начать с главного: в Go есть два больших семейства типов. Одни — это обычные значения (int, struct, массивы, float64, bool, и т. д.), другие — это ссылочные структуры, к которым относятся только три типа: slice, map и chan.Первое семейство — value types — м…

  • пятница, 25 апреля 2025 г. в 00:00:08
golang
Еще раз про Di-контейнеры в golang

В предыдущей статье я попросил — «Расскажите, зачем вам DI‑контейнер в golang». Большое спасибо всем, кто оставил коммент и проголосовал. Общий вывод такой: используем контейнер, потому что с ним удобно писать тесты. Тесты — весомый аргумент, особенно в контексте того, что тест — это часть кода. Получается, мы все таки «тащим» Di‑контейнер в проект. Ну, хорошо....Вероятно, это будет uber‑fx, ведь у него хорошая документация, самое простое и понятное API по сравнению с другими..., или нет — не …

  • четверг, 24 апреля 2025 г. в 00:00:05