Вопрос из комментариев: я только вкатываюсь в го из фронтенда, вокруг го нет зоопарка фреймворков для написания бекенда? Бегло пробежавшись по реддит обнаружил, что в основном все на го пишут без какого либо фрейма
Очень хороший вопрос, ответ на него достоин отдельного поста.
Да, мир Go намного проще — фреймворков тут вовсе нет (за редкими исключениями, но такое тут не любят). Если вы решили перекатиться в Go, можете наконец-то спокойно вздохнуть и расслабиться — вам достаточно изучить сам язык, при чём сделать это крайне просто.
Вам больше не нужно гнаться за зоопарком фреймворков, каждый из которых в изучении намного сложнее самого языка, как в JS/TS экосистеме. Я понимаю о чём говорю, ведь я сам когда-то писал на Vue.js, который далеко не самый сложный фронтэнд-фреймворк.
И это намеренный дизайн языка, а не недостаток. Go создавался с философией "батарейки включены" — стандартной библиотеки обычно достаточно для большинства задач. А если что-то и подключается дополнительно, то больше для удобства, да и делать библиотеки стараются как можно более минималистичными, потому что это ценится в первую очередь.
- Хотите HTTP сервер? net/http из стандартной библиотеки.
- Роутинг? Есть лёгкие библиотеки вроде того же chi (по нему у меня, кстати, есть очень подробный практический гайд). К тому же, стандартная библиотека сама движется в правильную сторону в этом плане (на самом деле, даже сейчас часто достаточно её функционала).
- Работа с БД? database/sql + драйвер для вашей БД, и вы готовы.
Ситуация, знакомая многим фронтендерам:
1. Решили написать новый проект
2. Какой фреймворк выбрать? Next.js? Nuxt? А может Angular или React? (простите, я безнадёжно отстал от этих трендов..)
3. Пока выбираете, уже вышли новые версии без обратной совместимости, которые надо изучать с нуля, да ещё и новые фреймворки
В Go такого нет. Вообще.
Конечно, существуют фреймворки вроде Gin, Echo, Fiber. Но это скорее расширенные роутеры с удобными хелперами — намного легче React или Angular. На самом деле, тот же Gin считается "слишком сложным", из-за чего многие смотрят в сторону Chi (я в том числе).
Типичный бэкенд на Go обычно состоит из:
- Стандартной библиотеки
- Нескольких небольших библиотек для конкретных задач
- Вашего кода, который всё это связывает
И главное — эти библиотеки стабильны.
Они не меняют API каждый месяц и не выкидывают breaking changes в минорных версиях.
Основные библиотеки, которые пригодятся:
- Роутеры: chi, gorilla/mux и др.
- БД: sqlx (есть и ORM, например GORM, но от такого тут многие плюются)
- Валидация: validator
- Конфигурация: cleanenv, viper и др.
- Логирование: zap, logrus, zerolog и др.
- Тестирование: встроенный testing + testify
И всё! В 90% случаев этого набора достаточно. Изучать их можно по мере необходимости, а не всё сразу.
Гибкая структура проекта
Ещё один приятный бонус: в Go почти нет строгих конвенций по структуре проекта. Нет жёстких правил "куда положить модель, а куда контроллер". Это выбирается исходя из задач конкретного проекта.
Статическая типизация
Если вы привыкли к TypeScript, то типизация в Go вам понравится. Она статическая, но сильно проще, чем в C++ или Java.
Для фронтендеров я вижу два пути:
1. Минималистичный: net/http + chi + sqlx. Лёгкий вход и сразу понятно, что происходит.
2. Привычный: Gin или Echo — они ближе к Express.js по ощущениям.
Я бы рекомендовал первый вариант — так вы действительно прочувствуете Go. Тем более, по нему у меня есть максимально подробный гайд. Если же вы хотите окунуться сразу в gRPC, то там всё немного иначе, но тоже не сложно, и на эту тему у меня также есть аналогичный большой гайд.
Поверьте, когда вы напишете свой первый проект без необходимости выбирать между 15 фреймворками и беспокоиться, что выбранный вами устареет через полгода, вы испытаете настоящее облегчение и окончательно влюбитесь в Go.
Николай Тузов

Live канал: @ntuzov_live
Интересные подборки по Go: @golang_digest
Обратная связь: @justskiv
Поддержать:
https://boosty.to/nikolay.tuzov/
https://t.me/ntuzov/126
Similar Channels



Введение в мир Go: Язык программирования и его возможности
Язык программирования Go, также известный как Golang, был разработан в Google в 2007 году и стал доступен широкой публике в 2009 году. Его создание было обусловлено необходимостью улучшения продуктивности разработки программного обеспечения, устранения недостатков других языков, таких как C++ и Java, и обеспечения высокой производительности и эффективного управления ресурсами. Go сочетает в себе простоту, эффективность и мощные возможности, что делает его идеальным выбором для создания различных приложений, начиная от веб-сервисов и заканчивая распределенными системами. Go известен своей встроенной поддержкой параллелизма, что позволяет разработчикам легко создавать многопоточные приложения, использующие современные многоядерные процессоры. В этой статье мы подробно рассмотрим язык Go, его ключевые особенности и применение, а также ответим на наиболее популярные вопросы, связанные с этим языком программирования.
Что такое язык программирования Go?
Go — это статически типизированный язык программирования, разработанный для увеличения производительности и упрощения разработки ПО. Он поддерживает отраслевые практики, такие как управление зависимостями, и обеспечивает быстрое время компиляции.
Язык Go также включает в себя такую функциональность, как сборка мусора и встроенные библиотеки для работы с параллелизмом, упрощая процесс разработки высокопроизводительных и масштабируемых систем.
Каковы ключевые особенности Go?
Ключевыми особенностями Go являются простота синтаксиса, эффективное управление памятью, встроенная поддержка конкурентного программирования через горутины и каналы, а также статическая типизация, что позволяет избежать множества ошибок во время компиляции.
Кроме того, Go предлагает мощные инструменты для работы с пакетами и зависимостями, а также интеграцию с системами разработки и DevOps, что делает его популярным выбором среди разработчиков.
Где применяется язык Go?
Go активно используется в разработке веб-приложений, серверов, микросервисов и облачных решений. Компании, такие как Google, Docker и Kubernetes, используют Go для создания своих продуктов и сервисов.
Кроме того, Go часто применяется в системах высоких нагрузок, таких как обработка больших данных, Internet of Things (IoT) и финансовых технологиях, где требуется высокая производительность и надежность.
Почему Go стал популярным среди разработчиков?
Одной из причин популярности Go является его простота и удобство в использовании. Разработчикам не нужно тратить время на изучение сложных концепций, как в других языках программирования, таких как C++.
Еще одной важной причиной является сообщество и экосистема Go: множество библиотек, инструментов и активная поддержка пользователей способствуют быстрому обучению и обмену знаниями.
Как начать изучение языка Go?
Для начала изучения Go рекомендуется скачать и установить компилятор с официального сайта golang.org. Существует множество онлайн-ресурсов, включая учебники, видео-курсы и документацию, которые помогут вам освоить язык.
Также полезно посетить сообщества Go, как онлайн, так и оффлайн, такие как митапы или конференции, где можно познакомиться с другими разработчиками и узнать о последних тенденциях в мире Go.
Николай Тузов Telegram Channel
Николай Тузов - это Telegram канал, созданный для тех, кто интересуется программированием на языке Go. Ведущий канала является Go Developer и также является автором YouTube канала по Go. Вы можете найти его видео здесь: https://www.youtube.com/@nikolay_tuzov. Однако, канал Николая Тузова не ограничивается только техническим контентом - вы также найдете здесь разнообразные интересные материалы. Например, если вам интересно узнать о различных темах, канал @ntuzov_live идеально подойдет для вас. Если у вас есть вопросы или предложения, вы всегда можете связаться с администратором канала по имени @justskiv. Кроме того, канал предлагает интересные подборки по Go на канале @golang_digest. Для тех, кто увлечен темой Obsidian и базами знаний, имеется отдельный канал @obsidian_geek. Присоединяйтесь к каналу Николая Тузова, чтобы быть в курсе последних новостей о языке программирования Go и не только!