Чему вы научитесь
Конкурентность — самая искомая тема «следующего уровня» в Go и частый вопрос почти любого собеседования. Этот курс проводит вас от «слышал про горутины» до «решаю concurrency-задачи чисто под -race» — на сквозном домене интернет-магазина shopdb, где заказы обрабатываются параллельно, склад живёт под защитой, а отмена приходит через context.
Главная фишка — автопроверка самой конкурентности. Обычный грейдер не умеет go test и -race, поэтому большинство concurrency-курсов проверяют лишь текст решения. Здесь иначе: результат проверяется детерминированным агрегатом (сумма / множество ID / финальное состояние — инвариант к порядку горутин), а скрытый харнесс прогоняет вашу функцию в стресс-цикле. Настоящий -race вы запускаете локально в парных практических шагах.
Финал — капстоун ProcessOrders(ctx, orders, workers): worker pool обрабатывает заказы, склад защищён от гонок, а отмена по context корректно останавливает дерево горутин. Результат детерминирован и проходит -race — законченный артефакт для портфолио.
Особенности курса
- Опираемся на Курсы 0–1, не повторяем их. Синтаксис, структуры, интерфейсы, ошибки и дженерики считаем известными — сразу работаем с конкурентностью.
- Автопроверка конкурентности с -race. Детерминированный агрегат + стресс-харнесс на платформе плюс парные шаги с настоящим -race -count локально.
- Разбор data race и модели памяти. Восемь разных классов гонок и happens-before «на пальцах» — ровно то, что спрашивают на собесе.
- Капстоун-артефакт. ProcessOrders в портфолио — код, который проходит -race, а не просто «совпадает по строке».
Из чего состоит курс
8 модулей:
M1 «О курсе» (зачем конкурентность, G-M-P «на пальцах»)
M2 горутины (запуск, lifecycle, WaitGroup, утечки)
M3 каналы (буферизация, close/range, deadlock)
M4 select (default, таймауты, done-канал)
M5 sync (Mutex/RWMutex, atomic, Once, sync.Map)
M6 context (отмена, дедлайны, пропагация)
M7 паттерны (pipeline, fan-in/out, worker pool, rate limiting)
M8 data race + happens-before + капстоун ProcessOrders.
48 уроков, 680 коротких шагов, 340 задач с автопроверкой.
О курсе
Для кого этот курс
Курс — для тех, кто уже пишет на Go и хочет уверенно владеть конкурентностью.
- Прошедшие Курсы 0–1 (или знающие синтаксис, структуры, интерфейсы, ошибки, дженерики): логичный следующий шаг.
- Junior→middle разработчики, готовящиеся к собесам: горутины, каналы, select, data race, context — частые вопросы Go-интервью.
- Backend-разработчики, которым конкурентность нужна в бою: параллельная обработка, worker pool, корректная отмена и graceful shutdown.
- Переходящие с других языков, кто уже освоил базовый Go и спотыкается о каналы, select и гонки.
- Те, кому нужен курс, где конкурентность реально автопроверяется под -race, а не только на словах.
Начальные требования
Нужны основы и идиоматика Go — то, что дают Курсы 0 и 1 линейки.
- Синтаксис, типы, слайсы/мапы, структуры, функции, указатели.
- Методы, интерфейсы, идиоматичные ошибки (errors.Is/As), дженерики 1.18+.
- Опыт конкурентного программирования НЕ требуется: горутины, каналы, sync и context вводятся с нуля.
Ничего устанавливать для прохождения не нужно — задачи решаются и проверяются в браузере на движке Go 1.26. Для парных -race-шагов пригодится локально установленный Go, но обязательным для сдачи это не является.