Подробнее
Что нужно для старта
- Понимание базовых концепций программирования: переменные, циклы, условия, функции. Если вы знаете разницу между массивом и циклом, понимаете принципы ООП или функционального программирования — этого достаточно. Курс не объясняет, что такое цикл, но детально разбирает все особенности Go: от статической типизации до горутин. Желательна базовая работа с терминалом и Git, но не критично — со всем помогу
Что вы получите
- Разрабатывать API-сервисы и микросервисы на Go, применяя идиоматичные паттерны языка
- Проектировать архитектуру приложений с использованием чистой архитектуры
- Профессионально обрабатывать ошибки, работать с файлами, JSON, временем и базами данных
- Применять конкурентные паттерны: горутины, каналы, синхронизацию через mutex и context
- Уверенно проходить технические собеседования на позицию Go-разработчика, демонстрируя знание архитектурных решений
Для кого этот курс
- - Разработчики с опытом на других языках (C#, Java, Python, JavaScript), которые хотят освоить Go для backend-разработки
- - Программисты, понимающие базовые концепции (циклы, функции, типы данных), готовые углубиться в идиоматичный Go
- - Специалисты, которые устали от теоретических курсов и хотят практический опыт с реальными проектами и code review
- - Те, кто нацелен на трудоустройство и готов к персональным встречам для отработки коммуникационных навыков
Программа курса
- Go-cтарт
- VS Code: установка и первые шаги
- Установка
- Hello GO
- Донастройка VS Code
- Структура Go-проекта: пакеты, модули и организация кода
- Организация кода. Точка входа
- Типы данных в Go: система числовых типов
- Основа базовых типов данных в Go: bool, string, float
- Объявление переменных и форматированный вывод в Go
- Анатомия переменной: память, адреса и размеры в Go
- Правила именования идентификаторов
- Экспорт идентификаторов и соглашения об аббревиатурах
- Комментарии: однострочные, многострочные и документирование
- Статическая типизация и краткое объявление переменных
- Нулевые значения (Zero Values)
- Арифметические операции
- Операторы инкремента/декремента и присваивания
- Побитовые операции
- Пакет fmt: форматированный вывод
- Продвинутое форматирование
- Константы
- Техническое задание #1
- Пакет math
- Псевдонимы типов
- Приведение типов
- Пользовательский ввод
- Техническое задание #2
- Практика кода
- Области видимости, указатели, продвинутый ввод
- Продвинутый ввод и итоги
- Операции сравнения
- Логические операторы
- Условные конструкции
- Инициализация переменных в условии
- Техническое задание #3
- Оператор switch
- Практика кода
- Генерация псевдослучайных чисел
- Циклы: базовые структуры управления
- Цикл for
- Дополнение
- Практика кода
- Массивы: основы
- Основы работы с массивами
- Циклы и перебор массивов
- Практические задачи с массивами
- Алгоритмы поиска и обработки данных
- Введение в слайсы
- Устройство и базовые операции
- Копирование, многомерность и специфика типа
- Практика: числовые срезы
- Практика: строки и «коллекции задач»
- Основы строк и внутреннее устройство
- Длина строк, байты и руны
- Перебор строк и работа с символами
- Пакет strings
- Производительность
- Техническое задание #5
- Техническое задание #4
- Техническое задание #6
- Ассоциативные массивы
- Множества
- Постановка задачи
- Базовый интерфейс и структура
- Добавление книг
- Просмотр книг
- Удаление книг
- Поиск
- Добавление пользователей
- Книги кользователя
- Выдача книг
- Функции: принцип DRY
- Основы функций
- Резюме
- Ошибки
- Паники
- Выводы
- Постановка задачи
- Реализация
- Основа
- Всё, что нужно знать
- Основа
- Всё, что нужно знать
- Постановка задачи
- Начало
- utils
- parse-format
- storage part 1
- storage part 2
- storage part 3
- storage part 4
- service 1
- service 2
- handler 1
- handler 2
- menu
- preRun
- Итоги
- Основы организации данных
- Создание и инициализация
- Инициализация структур и видимость
- Создание структур
- Резюме
- Постановка задачи
- Реализация
- Предназначение
- Сериализация
- Десериализация
- Дополнение
- Демонстрация
- Техническое задание #11
- Реализация
- Итоги
- Основа
- Замечание
- Погружение
- Клонирование шаблона и инициализация проекта
- Создание моделей Contact и ContactRelation
- DTO для обновления контакта с указателями
- Валидация полей и доменные ошибки
- Фабричная функция NewContact
- Методы управления тегами контакта
- Управление связями между контактами
- Структура ContactBook и конструктор
- CRUD-операции: создание и чтение контактов
- CRUD-операции: обновление и удаление
- Реализация поиска по имени, телефону и тегам
- Методы работы со связями в ContactBook
- Методы сериализации и десериализации
- Интерфейс Storage для персистентности
- JSONStorage: реализация метода Load
- JSONStorage: атомарная запись файлов
- Тестирование ContactBook и JSONStorage
- Структура CLI и внедрение зависимостей
- Обработчик вывода списка контактов
- Главный цикл и обработка команд CLI
- Точка входа и инициализация приложения
- CLI: создание контакта с вводом данных
- Обработчик выхода с сохранением данных
- Тестирование функции выхода
- Техническое задание #12
- Горутины: первые шаги
- Стек вызовов горутин и управление runtime
- Каналы как основы синхронизации горутин
- Буферизованные каналы
- Обработка ошибок в горутинах
- Альтернативная обработка ошибок
- Примитив синхронизации горутин
- Защита общих данных
- Практика
- Deadlock — взаимная блокировка горутин
- Самостоятельная работа
- Принципы, которые делают код лучше
- Factory
- Builder
- Prototype
- Singleton
- Adapter
- Дополнение
- Подключение сторонних библиотек
- Теория ключевых аспектов
- Есть вопросик...
- Зачем нужны базы данных
- Установка и настройка окружения для работы с SQLite
- Основные концепции структуры базы данных
- Отношения в базе данных
- Что такое SQL и система типов
- Создание таблиц
- Ограничения SQL
- Добавление записей
- Самостоятельная работа: наполнение данными
- Выборка данных
- Фильтрация данных
- Оператор обновления данных
- Самостоятельная работа на обновление данных
- Оператор удаления данных
- Самостоятельная работа: создание и наполнение базы данных
- Сложные концепции
- Самостоятельная работа на сложные запросы
- Сложные запросы
- Самостоятельная работа на объединение
- Базовый HTTP-сервер
- Модель Contact
- Инициализация SQLite и миграции
- Репозиторий контактов
- Сервис контактов
- HTTP-обработчик создания контакта
- Интеграция слоя контактов
- Рефакторинг
- Валидация и уникальность
- Валидация по-взрослому
- GET-запрос получения всех контактов
- GET-запрос получение контакта по ID
- Мягкое удаление контакта (Soft Delete)
- Техническое задание
- Модель пользователя и структура аутентификации
- Таблица в базе данных
- Заготовка слоя регистрации
- Регистрация пользователя
- Хеширование паролей
- Аутентификация и проверка пароля
- JWT-токены: Claims и JWTService
- Генерация JWT при успешной авторизации
- Окружение
- JWT Middleware для защиты эндпоинтов
- Поддержка Bearer-токенов
- Проверка владельца при удалении
- Проверка владельца при обновлении
- Перспективы развития
- Что будем делать: Marketplace-Go — обзор проекта
Подробности будут доступны на странице курса
- 🗑️ 042 PostgreSQL для Basket в Docker Compose
- 🗑️ 043 Gin-сервер и health-check для Basket
- 🗑️ 044 Миграции Basket и автозапуск
- 🗑️ 045 Доменные модели: ShoppingCart, ShoppingCartItem
- 🗑️ 046 Репозиторий: сохранение корзины (транзакция)
- 🗑️ 047 Command handler: сохранение корзины
- 🗑️ 048 HTTP handler: POST /cart
- 🗑️ 049 Маршрутизация API v1: /cart
- 🗑️ 050 Инициализация слоёв и DI
- 🗑️ 051 Валидация моделей (go-playground/validator)
- 🗑️ 052 Middleware: централизованная обработка ошибок
- 🗑️ 053 Интеграция ErrorHandlerMiddleware
- 🗑️ 054 Репозиторий: получение корзины
- 🗑️ 055 Query handler: получение корзины
- 🗑️ 056 HTTP handler: GET /cart/:accountName
- 🗑️ 057 Маршрут GET /cart/:accountName
- 🗑️ 058 Кастомный тип NotFoundError
- 🗑️ 059 [ТЗ] Удаление корзины
- 🗑️ 060 Redis-контейнер для кэширования
- 🗑️ 061 RedisCartRepository
- 🗑️ 062 Интеграция Redis
- 🗑️ 063 Dockerfile и compose-prod для Basket
- 🗑️ Саморефлексия
Подробности будут доступны на странице курса
- 🚚 092 PostgreSQL для Checkout и миграции
- 🚚 093 Конфигурация и запуск миграций
- 🚚 094 Gin-сервер и health-check для Checkout
- 🚚 095 Доменная модель: Order, Value Objects, Enums
- 🚚 096 Интерфейс и реализация OrderRepository
- 🚚 097 Репозиторий: получение заказа с позициями
- 🚚 098 Репозиторий: поиск заказов по аккаунту
- 🚚 099 Репозиторий: создание заказа (транзакция)
- 🚚 100 Query handler: заказ по ID
- 🚚 101 HTTP handler: GET /orders/:id
- 🚚 102 Маршрут и DI для Checkout
- 🚚 103 [ТЗ] Заказы по аккаунту
- 🚚 104 RabbitMQ-контейнер в Docker Compose
- 🚚 105 Структура messaging: заготовки
- 🚚 106 BaseIntegrationEvent и OrderSubmittedEvent
- 🚚 107 RabbitMQ Publisher: exchange, queue, publish
- 🚚 108 Command handler: CheckoutCart и публикация события
- 🚚 109 HTTP handler: POST /cart/checkout
- 🚚 110 Маршрут checkout и интеграция RabbitMQ
- 🚚 111 RabbitMQ Consumer: подключение и обработка
- 🚚 112 ProcessOrderSubmissionHandler: создание заказа
- 🚚 113 OrderSubmittedConsumer: маппинг события в команду
- 🚚 114 Интеграция consumer в Checkout с graceful shutdown
- 🚚 115 Dockerfile и compose-prod для Checkout
- 🚚 Саморефлексия
- 📊 116.1 Введение в Prometheus и Grafana
- 📊 116.2 Пакет metrics: HTTP, gRPC, DB, RabbitMQ
- 📊 117 Gin Middleware для Prometheus-метрик
- 📊 118 gRPC-интерцепторы метрик
- 📊 119 Метрики в Catalog-сервисе
- 📊 120 Метрики в Promotion-сервисе
- 📊 121 Конфигурация Prometheus (prometheus.yml)
- 📊 122 Datasource Grafana для Prometheus
- 📊 123 Prometheus и Grafana в compose-prod
- 📊 124.1 Демо: дашборды Prometheus и Grafana
- 📊 124.2 Grafana-дашборды: Catalog и Promotion
- 📊 125 Нагрузочное тестирование с k6 (HTTP)
- 📊 126 Тюнинг пула соединений PostgreSQL
- 📊 127 k6: нагрузочный тест gRPC
- 📊 128 Portainer: управление контейнерами
- 📊 Саморефлексия
- Итоги
01Первые шаги
- Go-cтарт
02Настройка окружения
- VS Code: установка и первые шаги
- Установка
- Hello GO
- Донастройка VS Code
03Базовые типы и переменные
- Структура Go-проекта: пакеты, модули и организация кода
- Организация кода. Точка входа
- Типы данных в Go: система числовых типов
- Основа базовых типов данных в Go: bool, string, float
- Объявление переменных и форматированный вывод в Go
- Анатомия переменной: память, адреса и размеры в Go
- Правила именования идентификаторов
- Экспорт идентификаторов и соглашения об аббревиатурах
- Комментарии: однострочные, многострочные и документирование
- Статическая типизация и краткое объявление переменных
- Нулевые значения (Zero Values)
04Выражения и константы
- Арифметические операции
- Операторы инкремента/декремента и присваивания
- Побитовые операции
- Пакет fmt: форматированный вывод
- Продвинутое форматирование
- Константы
- Техническое задание #1
05Типы и пользовательский ввод
- Пакет math
- Псевдонимы типов
- Приведение типов
- Пользовательский ввод
- Техническое задание #2
- Практика кода
06Память, указатели и продвинутый ввод данных
- Области видимости, указатели, продвинутый ввод
- Продвинутый ввод и итоги
07Принятие решений: условия и логика
- Операции сравнения
- Логические операторы
- Условные конструкции
- Инициализация переменных в условии
- Техническое задание #3
- Оператор switch
- Практика кода
08Повторение
- Генерация псевдослучайных чисел
- Циклы: базовые структуры управления
- Цикл for
- Дополнение
- Практика кода
09Массивы
- Массивы: основы
- Основы работы с массивами
- Циклы и перебор массивов
- Практические задачи с массивами
- Алгоритмы поиска и обработки данных
10Слайсы
- Введение в слайсы
- Устройство и базовые операции
- Копирование, многомерность и специфика типа
- Практика: числовые срезы
- Практика: строки и «коллекции задач»
11Строки
- Основы строк и внутреннее устройство
- Длина строк, байты и руны
- Перебор строк и работа с символами
- Пакет strings
- Производительность
12Применение строк и срезов
- Техническое задание #5
- Техническое задание #4
- Техническое задание #6
13Коллекции (map и set)
- Ассоциативные массивы
- Множества
14Техническое задание #7
- Постановка задачи
- Базовый интерфейс и структура
- Добавление книг
- Просмотр книг
- Удаление книг
- Поиск
- Добавление пользователей
- Книги кользователя
- Выдача книг
15Функции
- Функции: принцип DRY
- Основы функций
- Резюме
16Критические ситуации
- Ошибки
- Паники
- Выводы
17Техническое задание #8
- Постановка задачи
- Реализация
18Про время
- Основа
- Всё, что нужно знать
19Про файлы и директории
- Основа
- Всё, что нужно знать
20Техническое задание #9
- Постановка задачи
- Начало
- utils
- parse-format
- storage part 1
- storage part 2
- storage part 3
- storage part 4
- service 1
- service 2
- handler 1
- handler 2
- menu
- preRun
- Итоги
21Структуры
- Основы организации данных
- Создание и инициализация
- Инициализация структур и видимость
- Создание структур
- Резюме
22Техническое задание #10
- Постановка задачи
- Реализация
23Про JSON
- Предназначение
- Сериализация
- Десериализация
24Композиция — не наследование
- Дополнение
- Демонстрация
- Техническое задание #11
- Реализация
- Итоги
25Интерфейсы
- Основа
- Замечание
- Погружение
26Практический проект: CRUD-приложение с персистентностью
- Клонирование шаблона и инициализация проекта
- Создание моделей Contact и ContactRelation
- DTO для обновления контакта с указателями
- Валидация полей и доменные ошибки
- Фабричная функция NewContact
- Методы управления тегами контакта
- Управление связями между контактами
- Структура ContactBook и конструктор
- CRUD-операции: создание и чтение контактов
- CRUD-операции: обновление и удаление
- Реализация поиска по имени, телефону и тегам
- Методы работы со связями в ContactBook
- Методы сериализации и десериализации
- Интерфейс Storage для персистентности
- JSONStorage: реализация метода Load
- JSONStorage: атомарная запись файлов
- Тестирование ContactBook и JSONStorage
- Структура CLI и внедрение зависимостей
- Обработчик вывода списка контактов
- Главный цикл и обработка команд CLI
- Точка входа и инициализация приложения
- CLI: создание контакта с вводом данных
- Обработчик выхода с сохранением данных
- Тестирование функции выхода
- Техническое задание #12
27Параллелизм и конкурентность
- Горутины: первые шаги
- Стек вызовов горутин и управление runtime
- Каналы как основы синхронизации горутин
- Буферизованные каналы
- Обработка ошибок в горутинах
- Альтернативная обработка ошибок
- Примитив синхронизации горутин
- Защита общих данных
- Практика
- Deadlock — взаимная блокировка горутин
- Самостоятельная работа
28Не SOLID
- Принципы, которые делают код лучше
29Жизнь без ООП
- Factory
- Builder
- Prototype
- Singleton
- Adapter
- Дополнение
30Управление зависимостями
- Подключение сторонних библиотек
31RESTful API: обзор фундаментальных концепций
- Теория ключевых аспектов
- Есть вопросик...
32SQL и СУБД: SQLite, введение в теорию хранения данных
- Зачем нужны базы данных
- Установка и настройка окружения для работы с SQLite
- Основные концепции структуры базы данных
- Отношения в базе данных
- Что такое SQL и система типов
- Создание таблиц
- Ограничения SQL
- Добавление записей
- Самостоятельная работа: наполнение данными
- Выборка данных
- Фильтрация данных
- Оператор обновления данных
- Самостоятельная работа на обновление данных
- Оператор удаления данных
- Самостоятельная работа: создание и наполнение базы данных
- Сложные концепции
- Самостоятельная работа на сложные запросы
- Сложные запросы
- Самостоятельная работа на объединение
33Полноценный REST API с JWT‑аутентификацией
- Базовый HTTP-сервер
- Модель Contact
- Инициализация SQLite и миграции
- Репозиторий контактов
- Сервис контактов
- HTTP-обработчик создания контакта
- Интеграция слоя контактов
- Рефакторинг
- Валидация и уникальность
- Валидация по-взрослому
- GET-запрос получения всех контактов
- GET-запрос получение контакта по ID
- Мягкое удаление контакта (Soft Delete)
- Техническое задание
- Модель пользователя и структура аутентификации
- Таблица в базе данных
- Заготовка слоя регистрации
- Регистрация пользователя
- Хеширование паролей
- Аутентификация и проверка пароля
- JWT-токены: Claims и JWTService
- Генерация JWT при успешной авторизации
- Окружение
- JWT Middleware для защиты эндпоинтов
- Поддержка Bearer-токенов
- Проверка владельца при удалении
- Проверка владельца при обновлении
- Перспективы развития
34Описание проекта
- Что будем делать: Marketplace-Go — обзор проекта
35Каталог товаров
36Корзина покупок
- 🗑️ 042 PostgreSQL для Basket в Docker Compose
- 🗑️ 043 Gin-сервер и health-check для Basket
- 🗑️ 044 Миграции Basket и автозапуск
- 🗑️ 045 Доменные модели: ShoppingCart, ShoppingCartItem
- 🗑️ 046 Репозиторий: сохранение корзины (транзакция)
- 🗑️ 047 Command handler: сохранение корзины
- 🗑️ 048 HTTP handler: POST /cart
- 🗑️ 049 Маршрутизация API v1: /cart
- 🗑️ 050 Инициализация слоёв и DI
- 🗑️ 051 Валидация моделей (go-playground/validator)
- 🗑️ 052 Middleware: централизованная обработка ошибок
- 🗑️ 053 Интеграция ErrorHandlerMiddleware
- 🗑️ 054 Репозиторий: получение корзины
- 🗑️ 055 Query handler: получение корзины
- 🗑️ 056 HTTP handler: GET /cart/:accountName
- 🗑️ 057 Маршрут GET /cart/:accountName
- 🗑️ 058 Кастомный тип NotFoundError
- 🗑️ 059 [ТЗ] Удаление корзины
- 🗑️ 060 Redis-контейнер для кэширования
- 🗑️ 061 RedisCartRepository
- 🗑️ 062 Интеграция Redis
- 🗑️ 063 Dockerfile и compose-prod для Basket
- 🗑️ Саморефлексия
37Промоакции
38Оформление заказов
- 🚚 092 PostgreSQL для Checkout и миграции
- 🚚 093 Конфигурация и запуск миграций
- 🚚 094 Gin-сервер и health-check для Checkout
- 🚚 095 Доменная модель: Order, Value Objects, Enums
- 🚚 096 Интерфейс и реализация OrderRepository
- 🚚 097 Репозиторий: получение заказа с позициями
- 🚚 098 Репозиторий: поиск заказов по аккаунту
- 🚚 099 Репозиторий: создание заказа (транзакция)
- 🚚 100 Query handler: заказ по ID
- 🚚 101 HTTP handler: GET /orders/:id
- 🚚 102 Маршрут и DI для Checkout
- 🚚 103 [ТЗ] Заказы по аккаунту
- 🚚 104 RabbitMQ-контейнер в Docker Compose
- 🚚 105 Структура messaging: заготовки
- 🚚 106 BaseIntegrationEvent и OrderSubmittedEvent
- 🚚 107 RabbitMQ Publisher: exchange, queue, publish
- 🚚 108 Command handler: CheckoutCart и публикация события
- 🚚 109 HTTP handler: POST /cart/checkout
- 🚚 110 Маршрут checkout и интеграция RabbitMQ
- 🚚 111 RabbitMQ Consumer: подключение и обработка
- 🚚 112 ProcessOrderSubmissionHandler: создание заказа
- 🚚 113 OrderSubmittedConsumer: маппинг события в команду
- 🚚 114 Интеграция consumer в Checkout с graceful shutdown
- 🚚 115 Dockerfile и compose-prod для Checkout
- 🚚 Саморефлексия
39Мониторинг и инфраструктура
- 📊 116.1 Введение в Prometheus и Grafana
- 📊 116.2 Пакет metrics: HTTP, gRPC, DB, RabbitMQ
- 📊 117 Gin Middleware для Prometheus-метрик
- 📊 118 gRPC-интерцепторы метрик
- 📊 119 Метрики в Catalog-сервисе
- 📊 120 Метрики в Promotion-сервисе
- 📊 121 Конфигурация Prometheus (prometheus.yml)
- 📊 122 Datasource Grafana для Prometheus
- 📊 123 Prometheus и Grafana в compose-prod
- 📊 124.1 Демо: дашборды Prometheus и Grafana
- 📊 124.2 Grafana-дашборды: Catalog и Promotion
- 📊 125 Нагрузочное тестирование с k6 (HTTP)
- 📊 126 Тюнинг пула соединений PostgreSQL
- 📊 127 k6: нагрузочный тест gRPC
- 📊 128 Portainer: управление контейнерами
- 📊 Саморефлексия
40Окончание
- Итоги
Отзывы о курсе
Оставьте отзыв
Расскажите о качестве обучения, поддержке и результате. Это поможет другим выбрать организацию осознанно.
Оставьте заявку
Консультант ответит на вопросы о курсе «Go: антикурс без воды, до трудоустройства» и поможет разобраться в деталях обучения.
Нажимая кнопку, вы даете согласие на обработку персональных данных
Информация обновлена 7 сентября 2026 г.

Stepik 
















