Backend Developer Go

Уроки с примерами кода; тему можно сразу закрепить вопросами в тренажёре.

Материалы открываются после регистрации на Free.

Уроки по модулям

  1. Инструменты и модули Go

    3 урока

    Единый инструментарий Go: сборка, запуск, форматирование и проверка кода, управление зависимостями через модули и осмысленная структура проекта. База, с которой начинается любой сервис на Go.

    1. Команды go: build, run, test, vet, fmt и модель сборки
    2. Модули: go.mod, go.sum, версии и выбор минимальной версии
    3. Пакеты, internal и видимость, структура проекта
  2. Язык Go

    5 уроков

    Семантика языка Go: базовые типы и нулевые значения, внутреннее устройство слайсов и мап, строки и руны в UTF-8, функции, замыкания и defer. Основа для чтения production-кода и понимания стоимости абстракций.

    1. Базовые типы, нулевые значения и приведения
    2. Слайсы: заголовок, len/cap, append и разделяемый массив
    3. Мапы: устройство, итерация без порядка и nil-мапа
    4. Строки, руны и байты: UTF-8 и преобразования
    5. Функции, замыкания, множественный возврат и defer
  3. Структуры, методы и встраивание

    3 урока

    Структуры и их сравнимость, методы с получателем по значению и по указателю, встраивание как замена наследованию. Здесь закладывается способ Go строить поведение из композиции, а не иерархий.

    1. Структуры, поля, сравнимость и пустая структура
    2. Методы, получатели по значению и указателю, метод-сеты
    3. Встраивание, продвижение методов и композиция
  4. Интерфейсы

    3 урока

    Неявная реализация, маленькие интерфейсы, объявление интерфейса на стороне потребителя и подводные камни вроде типизированного nil. Основной механизм полиморфизма и развязки в Go.

    1. Неявная реализация, маленькие интерфейсы и интерфейс у потребителя
    2. Устройство интерфейса и ловушка типизированного nil
    3. Type assertion, type switch и any
  5. Ошибки, panic и recover

    2 урока

    Ошибка как значение, оборачивание через %w и разбор цепочки через errors.Is/As, sentinel-ошибки, а также роль panic и recover. Обработка ошибок в Go явная и живёт в возвращаемых значениях, а не в исключениях.

    1. Ошибка-значение, %w, errors.Is/As и sentinel
    2. panic, recover и defer: когда и как
  6. Указатели и значения

    2 урока

    Передача по значению, указатели и когда они нужны, разница между значением и ссылочными типами. От этих решений зависят копирование, изменяемость и нагрузка на аллокатор.

    1. Указатели и передача по значению
    2. Семантика значений и ссылочных типов
  7. Дженерики

    2 урока

    Параметры типов и ограничения, встроенный comparable, обобщённые контейнеры и алгоритмы из пакетов slices и maps. Дают типобезопасность без приведений там, где раньше плодили копипасту или any.

    1. Параметры типов, ограничения и comparable
    2. Обобщённые алгоритмы и пакеты slices/maps
  8. Модель конкурентности

    2 урока

    Как из горутин, каналов и синхронизации собирается конкурентная программа и чем конкурентность отличается от параллелизма. Модель памяти Go и правило happens-before — фундамент, на котором держатся остальные темы конкурентности.

    1. Конкурентность против параллелизма и подход Go
    2. Модель памяти Go и happens-before
  9. Горутины и планировщик

    3 урока

    Лёгкие горутины и модель планировщика G-P-M: локальные очереди, work stealing, вытеснение и обработка блокирующих вызовов. Объясняет, почему Go держит миллионы горутин на горстке потоков.

    1. Горутины: запуск, стек, жизненный цикл и стоимость
    2. Планировщик G-P-M: очереди, work stealing, вытеснение
    3. Блокирующие вызовы, netpoller и GOMAXPROCS
  10. Каналы и select

    2 урока

    Буферизированные и небуферизированные каналы, правила блокировки и закрытия, мультиплексирование через select. Основной способ Go передавать данные и координировать горутины вместо общей памяти.

    1. Каналы: буфер, блокировка, закрытие, направление, nil
    2. select, default, таймауты и мультиплексирование
  11. Примитивы синхронизации

    3 урока

    Mutex и RWMutex, WaitGroup, Once, Pool и атомарные операции, а также когда что выбирать. Нужны, чтобы защитить общее состояние без гонок там, где каналы избыточны.

    1. Mutex и RWMutex: защита общего состояния
    2. WaitGroup, Once, Pool и Cond
    3. Атомарные операции и sync/atomic
  12. Пакет context

    2 урока

    Отмена, дедлайны и request-scoped значения через дерево контекстов. Несущая конструкция таймаутов и graceful-остановки во всех сетевых API Go.

    1. Отмена, дедлайны и таймауты через context
    2. Request-scoped значения и распространение контекста
  13. Паттерны конкурентности и гонки

    4 урока

    Worker pool, fan-in/fan-out, конвейеры, а также гонки данных, дедлоки и утечки горутин. Паттерны дают форму конкурентному коду, а детектор гонок и правильное завершение — его надёжность.

    1. Worker pool и ограничение параллелизма
    2. Fan-in/fan-out, конвейеры и errgroup
    3. Гонки данных и детектор -race
    4. Дедлоки и утечки горутин
  14. Память и сборщик мусора

    3 урока

    Стек и куча, конкурентный трёхцветный сборщик мусора, барьер записи и паузы stop-the-world, настройка через GOGC и GOMEMLIMIT. Понимание рантайма отделяет гарантии языка от поведения под нагрузкой.

    1. Стек, куча и аллокации
    2. Трёхцветный конкурентный GC и паузы stop-the-world
    3. GOGC, GOMEMLIMIT и настройка сборщика
  15. Escape-анализ

    1 урок

    Как компилятор решает, попадёт значение на стек или в кучу, и как это увидеть через флаги сборки. Меньше побегов в кучу — меньше аллокаций и нагрузки на сборщик мусора.

    1. Escape-анализ: стек или куча и как это увидеть
  16. Профилирование

    3 урока

    Поиск узких мест через pprof и трассировку выполнения, диагностика аллокаций и пауз сборщика мусора, бенчмарки с учётом памяти. Оптимизация начинается с измерения, а не с догадок.

    1. pprof: CPU- и heap-профили
    2. Профили goroutine, block и mutex
    3. go tool trace и бенчмарки с -benchmem
  17. HTTP-сервисы на net/http

    2 урока

    Встроенный HTTP-сервер и клиент Go: обработчики, маршрутизация, таймауты и работа с запросом. Для многих сервисов стандартной библиотеки достаточно без внешнего фреймворка.

    1. HTTP-сервер: Handler, ServeMux и таймауты
    2. HTTP-клиент: запросы, тело и соединения
  18. Middleware и маршрутизация

    2 урока

    Маршрутизация запросов и цепочки middleware поверх http.Handler: логирование, аутентификация, восстановление после паники. Порядок обёрток определяет, как обрабатывается каждый запрос.

    1. Middleware как обёртка Handler: порядок и композиция
    2. Маршрутизация и паттерны ServeMux
  19. JSON и сериализация

    2 урока

    Кодирование и декодирование через encoding/json, теги структур, omitempty и собственные маршалеры. Формат обмена большинства HTTP-API, где важно контролировать форму и совместимость данных.

    1. encoding/json: Marshal, Unmarshal и теги
    2. Собственные маршалеры и потоковый Encoder/Decoder
  20. HTTP и REST-семантика

    2 урока

    Методы, коды состояния, идемпотентность, кэширование и согласование содержимого. Основа корректного и предсказуемого API независимо от фреймворка.

    1. Методы, коды состояния и идемпотентность
    2. REST-ограничения, кэширование и версионирование
  21. Роутеры и фреймворки

    1 урок

    Лёгкие роутеры и фреймворки (chi, gin, echo) поверх понимания net/http: удобная маршрутизация, группы, middleware. Берут на себя рутину, но не заменяют знание стандартного сервера.

    1. Роутеры и фреймворки поверх net/http: когда и что выбрать
  22. Доступ к данным

    3 урока

    Работа с базой данных из Go: database/sql и драйвер pgx, пул соединений, транзакции, миграции и генерация типобезопасного кода через sqlc. Нужно понимать, какой SQL выполняется и как управляется соединение.

    1. database/sql, драйверы, pgx и пул соединений
    2. Транзакции и отмена запросов через context
    3. Миграции схемы и типобезопасные запросы через sqlc
  23. Готовность к продакшну

    1 урок

    Что отличает рабочий сервис от учебного: конфигурация, тесты, наблюдаемость, устойчивость к сбоям и предсказуемый деплой. Эти свойства закладываются в код, а не добавляются потом.

    1. Конфигурация сервиса и принципы twelve-factor
  24. Тестирование

    4 урока

    Пакет testing, table-driven тесты и подтесты, httptest для HTTP-обработчиков, бенчмарки, fuzzing и детектор гонок. Тесты фиксируют поведение и защищают от регрессий при изменениях.

    1. testing: table-driven, подтесты и t.Parallel
    2. httptest и интерфейсные моки
    3. Бенчмарки, fuzzing и -race
    4. Покрытие и организация тестов
  25. Наблюдаемость

    2 урока

    Структурное логирование через log/slog, метрики и трассировки по OpenTelemetry, health-проверки. Без них поведение сервиса под нагрузкой остаётся непрозрачным.

    1. Структурное логирование через log/slog
    2. Метрики и трассировки по OpenTelemetry
  26. Устойчивость и завершение

    2 урока

    Таймауты и отмена через context, повторы и размыкатели цепи, корректное завершение сервиса. Сетевые вызовы падают, и сервис должен переживать частичные отказы без каскада.

    1. Таймауты, отмена и graceful shutdown
    2. Повторы с backoff и размыкатель цепи
  27. Контейнеры и деплой

    2 урока

    Упаковка сервиса в контейнер: multi-stage сборка, минимальный образ и статический бинарник Go, переменные окружения и кросс-компиляция. Воспроизводимая сборка делает деплой предсказуемым.

    1. Multi-stage Dockerfile и статический бинарник
    2. Кросс-компиляция, build-флаги и embed

О курсе

Глубокое понимание языка Go и его среды выполнения для backend-разработки. Курс разбирает не синтаксис, а семантику языка и поведение рантайма: модель типов, слайсы и мапы, интерфейсы и ошибки как значения, конкурентность (горутины, каналы, планировщик, модель памяти), сборку мусора и escape-анализ, а также прикладной слой — HTTP-сервисы, доступ к данным, тестирование и продакшн-практики. Цель — научиться видеть стоимость абстракций и поведение кода под нагрузкой, а не просто заставлять его работать.

Дальше по теме

Пройдите курс и проверьте темы вслух