Курс на Stepik
Обложка курса «Go: антикурс без воды, до трудоустройства» на Stepik
13 500 ₽

Go: антикурс без воды, до трудоустройства ★ 5.000

Открыть на
STEPIK.ORG

Практический набор действий для разработчиков, которые хотят профессионально освоить Go и получить работу. От базового синтаксиса до production-ready кода, включая подготовку к собеседованиям и широкий спектр технологий: MySQL, PostgreSQL, Redis, Protocol Buffers, gRPC, RabbitMQ, Docker Compose, Prometheus, Grafana, k6 и др.

Показатель Текущие показатели Рост
Значение 🏆 Рейтинг 3 дн 7 дн 30 дн
Количество учеников на курсе «Go: антикурс без воды, до трудоустройства»Учеников на курсе 133
Сертификаты, выданные на курсе «Go: антикурс без воды, до трудоустройства»Сертификатов выдано 4
Отзывы о курсе «Go: антикурс без воды, до трудоустройства»Отзывов получено 7
Рейтинг курса «Go: антикурс без воды, до трудоустройства»Рейтинг курса 5.000
Уроки в курсе «Go: антикурс без воды, до трудоустройства»Количество уроков 350
Тесты в курсе «Go: антикурс без воды, до трудоустройства»Количество квизов 264
Задачи с кодом в курсе «Go: антикурс без воды, до трудоустройства»Количество задач с кодом 47
Время прохождения курса «Go: антикурс без воды, до трудоустройства»Время прохождения курса —
Стоимость курса «Go: антикурс без воды, до трудоустройства»Стоимость курса 13 500 ₽ —
Обновления курса «Go: антикурс без воды, до трудоустройства»Обновления курса — —
Дата публикации курса «Go: антикурс без воды, до трудоустройства»Дата публикации курса — ———
Последнее обновление курса «Go: антикурс без воды, до трудоустройства»Последнее обновление — ———
Сложность normal — ———

Содержание курса

Разделы в курсе «Go: антикурс без воды, до трудоустройства» 41 раздел Уроки в курсе «Go: антикурс без воды, до трудоустройства» 350 уроков Тесты в курсе «Go: антикурс без воды, до трудоустройства» 264 теста Задачи в курсе «Go: антикурс без воды, до трудоустройства» 47 задач Время прохождения курса «Go: антикурс без воды, до трудоустройства» 93 ч. Последнее обновление курса «Go: антикурс без воды, до трудоустройства» обн. 7 октября 2026

Первые шаги

1 урок
1. Старт ↗

Настройка окружения

4 урока
1. VS Code: установка и первые шаги ↗
2. Установка ↗
3. Hello GO ↗
4. Донастройка VS Code ↗

Базовые типы и переменные

11 уроков
1. Структура Go-проекта: пакеты, модули и организация кода ↗
2. Организация кода. Точка входа ↗
3. Типы данных в Go: система числовых типов ↗
4. Основа базовых типов данных в Go: bool, string, float ↗
5. Объявление переменных и форматированный вывод в Go ↗
6. Анатомия переменной: память, адреса и размеры в Go ↗
7. Правила именования идентификаторов ↗
8. Экспорт идентификаторов и соглашения об аббревиатурах ↗
9. Комментарии: однострочные, многострочные и документирование ↗
10. Статическая типизация и краткое объявление переменных ↗
11. Нулевые значения (Zero Values) ↗

Выражения и константы

7 уроков
1. Арифметические операции ↗
2. Операторы инкремента/декремента и присваивания ↗
3. Побитовые операции ↗
4. Пакет fmt: форматированный вывод ↗
5. Продвинутое форматирование ↗
6. Константы ↗
7. Техническое задание #1 ↗

Типы и пользовательский ввод

6 уроков
1. Пакет math ↗
2. Псевдонимы типов ↗
3. Приведение типов ↗
4. Пользовательский ввод ↗
5. Техническое задание #2 ↗
6. Практика кода ↗

Память, указатели и продвинутый ввод данных

2 урока
1. Области видимости, указатели, продвинутый ввод ↗
2. Продвинутый ввод и итоги ↗

Принятие решений: условия и логика

7 уроков
1. Операции сравнения ↗
2. Логические операторы ↗
3. Условные конструкции ↗
4. Инициализация переменных в условии ↗
5. Техническое задание #3 ↗
6. Оператор switch ↗
7. Практика кода ↗

Повторение

5 уроков
1. Генерация псевдослучайных чисел ↗
2. Циклы: базовые структуры управления ↗
3. Цикл for ↗
4. Дополнение ↗
5. Практика кода ↗

Массивы

5 уроков
1. Массивы: основы ↗
2. Основы работы с массивами ↗
3. Циклы и перебор массивов ↗
4. Практические задачи с массивами ↗
5. Алгоритмы поиска и обработки данных ↗

Слайсы

5 уроков
1. Введение в слайсы ↗
2. Устройство и базовые операции ↗
3. Копирование, многомерность и специфика типа ↗
4. Практика: числовые срезы ↗
5. Практика: строки и «коллекции задач» ↗

Строки

5 уроков
1. Основы строк и внутреннее устройство ↗
2. Длина строк, байты и руны ↗
3. Перебор строк и работа с символами ↗
4. Пакет strings ↗
5. Производительность ↗

Применение строк и срезов

3 урока
1. Техническое задание #5 ↗
2. Техническое задание #4 ↗
3. Техническое задание #6 ↗

Коллекции (map и set)

2 урока
1. Ассоциативные массивы ↗
2. Множества ↗

Техническое задание #7

9 уроков
1. Постановка задачи ↗
2. Базовый интерфейс и структура ↗
3. Добавление книг ↗
4. Просмотр книг ↗
5. Удаление книг ↗
6. Поиск ↗
7. Добавление пользователей ↗
8. Книги кользователя ↗
9. Выдача книг ↗

Функции

3 урока
1. Функции: принцип DRY ↗
2. Основы функций ↗
3. Резюме ↗

Критические ситуации

3 урока
1. Ошибки ↗
2. Паники ↗
3. Выводы ↗

Техническое задание #8

2 урока
1. Постановка задачи ↗
2. Реализация ↗

Про время

2 урока
1. Основа ↗
2. Всё, что нужно знать ↗

Про файлы и директории

2 урока
1. Основа ↗
2. Всё, что нужно знать ↗

Техническое задание #9

15 уроков
1. Постановка задачи ↗
2. Начало ↗
3. utils ↗
4. parse-format ↗
5. storage part 1 ↗
6. storage part 2 ↗
7. storage part 3 ↗
8. storage part 4 ↗
9. service 1 ↗
10. service 2 ↗
11. handler 1 ↗
12. handler 2 ↗
13. menu ↗
14. preRun ↗
15. Итоги ↗

Структуры

5 уроков
1. Основы организации данных ↗
2. Создание и инициализация ↗
3. Инициализация структур и видимость ↗
4. Создание структур ↗
5. Резюме ↗

Техническое задание #10

2 урока
1. Постановка задачи ↗
2. Реализация ↗

Про JSON

3 урока
1. Предназначение ↗
2. Сериализация ↗
3. Десериализация ↗

Композиция — не наследование

5 уроков
1. Дополнение ↗
2. Демонстрация ↗
3. Техническое задание #11 ↗
4. Реализация ↗
5. Итоги ↗

Интерфейсы

3 урока
1. Основа ↗
2. Замечание ↗
3. Погружение ↗

Практический проект: CRUD-приложение с персистентностью

25 уроков
1. Клонирование шаблона и инициализация проекта ↗
2. Создание моделей Contact и ContactRelation ↗
3. DTO для обновления контакта с указателями ↗
4. Валидация полей и доменные ошибки ↗
5. Фабричная функция NewContact ↗
6. Методы управления тегами контакта ↗
7. Управление связями между контактами ↗
8. Структура ContactBook и конструктор ↗
9. CRUD-операции: создание и чтение контактов ↗
10. CRUD-операции: обновление и удаление ↗
11. Реализация поиска по имени, телефону и тегам ↗
12. Методы работы со связями в ContactBook ↗
13. Методы сериализации и десериализации ↗
14. Интерфейс Storage для персистентности ↗
15. JSONStorage: реализация метода Load ↗
16. JSONStorage: атомарная запись файлов ↗
17. Тестирование ContactBook и JSONStorage ↗
18. Структура CLI и внедрение зависимостей ↗
19. Обработчик вывода списка контактов ↗
20. Главный цикл и обработка команд CLI ↗
21. Точка входа и инициализация приложения ↗
22. CLI: создание контакта с вводом данных ↗
23. Обработчик выхода с сохранением данных ↗
24. Тестирование функции выхода ↗
25. Техническое задание #12 ↗

Параллелизм и конкурентность

11 уроков
1. Горутины: первые шаги ↗
2. Стек вызовов горутин и управление runtime ↗
3. Каналы как основы синхронизации горутин ↗
4. Буферизованные каналы ↗
5. Обработка ошибок в горутинах ↗
6. Альтернативная обработка ошибок ↗
7. Примитив синхронизации горутин ↗
8. Защита общих данных ↗
9. Практика ↗
10. Deadlock — взаимная блокировка горутин ↗
11. Самостоятельная работа ↗

Не SOLID

1 урок
1. Принципы, которые делают код лучше ↗

Жизнь без ООП

6 уроков
1. Factory ↗
2. Builder ↗
3. Prototype ↗
4. Singleton ↗
5. Adapter ↗
6. Дополнение ↗

Управление зависимостями

1 урок
1. Подключение сторонних библиотек ↗

RESTful API: обзор фундаментальных концепций

2 урока
1. Теория ключевых аспектов ↗
2. Есть вопросик... ↗

SQL и СУБД: SQLite, введение в теорию хранения данных

19 уроков
1. Зачем нужны базы данных ↗
2. Установка и настройка окружения для работы с SQLite ↗
3. Основные концепции структуры базы данных ↗
4. Отношения в базе данных ↗
5. Что такое SQL и система типов ↗
6. Создание таблиц ↗
7. Ограничения SQL ↗
8. Добавление записей ↗
9. Самостоятельная работа: наполнение данными ↗
10. Выборка данных ↗
11. Фильтрация данных ↗
12. Оператор обновления данных ↗
13. Самостоятельная работа на обновление данных ↗
14. Оператор удаления данных ↗
15. Самостоятельная работа: создание и наполнение базы данных ↗
16. Сложные концепции ↗
17. Самостоятельная работа на сложные запросы ↗
18. Сложные запросы ↗
19. Самостоятельная работа на объединение ↗

Полноценный REST API с JWT‑аутентификацией

28 уроков
1. Базовый HTTP-сервер ↗
2. Модель Contact ↗
3. Инициализация SQLite и миграции ↗
4. Репозиторий контактов ↗
5. Сервис контактов ↗
6. HTTP-обработчик создания контакта ↗
7. Интеграция слоя контактов ↗
8. Рефакторинг ↗
9. Валидация и уникальность ↗
10. Валидация по-взрослому ↗
11. GET-запрос получения всех контактов ↗
12. GET-запрос получение контакта по ID ↗
13. Мягкое удаление контакта (Soft Delete) ↗
14. Техническое задание ↗
15. Модель пользователя и структура аутентификации ↗
16. Таблица в базе данных ↗
17. Заготовка слоя регистрации ↗
18. Регистрация пользователя ↗
19. Хеширование паролей ↗
20. Аутентификация и проверка пароля ↗
21. JWT-токены: Claims и JWTService ↗
22. Генерация JWT при успешной авторизации ↗
23. Окружение ↗
24. JWT Middleware для защиты эндпоинтов ↗
25. Поддержка Bearer-токенов ↗
26. Проверка владельца при удалении ↗
27. Проверка владельца при обновлении ↗
28. Перспективы развития ↗

Описание проекта

1 урок
1. Что будем делать ↗

Что нас ждёт на собеседовани

1 урок
1. Практические рекомендации ↗

Каталог товаров

43 урока
1. 🗃️ 001 Введение в проект ↗
2. 🗃️ 002 Инициализация Go-модуля и Gin-сервер ↗
3. 🗃️ 003 Доменные сущности: BaseEntity, Brand, Category, CatalogI ↗
4. 🗃️ 004 Docker Compose и PostgreSQL ↗
5. 🗃️ 005 SQL-миграции и seed-данные ↗
6. 🗃️ 006 Репозиторий брендов (PostgreSQL) ↗
7. 🗃️ 007 Query handler: получение брендов ↗
8. 🗃️ 008 HTTP handler: эндпоинт брендов ↗
9. 🗃️ 009 Маршрутизация API v1: /brands ↗
10. 🗃️ 010 Конфигурация через .env и godotenv ↗
11. 🗃️ 011.1 [ТЗ] Самостоятельная работа ↗
12. 🗃️ 011.2 Эндпоинт /categories: полный цикл ↗
13. 🗃️ 012 Репозиторий товаров с JOIN ↗
14. 🗃️ 013 Query handler: список товаров ↗
15. 🗃️ 014 HTTP handler: список товаров ↗
16. 🗃️ 015 Маршрут /catalog-items ↗
17. 🗃️ 016 Рефакторинг SQL-запросов ↗
18. 🗃️ 017 Репозиторий: получение товара по ID ↗
19. 🗃️ 018 Query handler: товар по ID ↗
20. 🗃️ 019 HTTP handler: товар по ID ↗
21. 🗃️ 020 Маршрут /catalog-items/ ↗
22. 🗃️ 021 Поиск по названию (ILIKE) ↗
23. 🗃️ 022 Query handler: поиск по названию ↗
24. 🗃️ 023 HTTP handler: поиск по названию ↗
25. 🗃️ 024 Маршрут /catalog-items/title/:title ↗
26. 🗃️ 025 Репозиторий: создание товара (INSERT) ↗
27. 🗃️ 026 Command handler: создание товара ↗
28. 🗃️ 027 HTTP handler: POST-запрос ↗
29. 🗃️ 028 Маршрут POST /catalog-items ↗
30. 🗃️ 029 Репозиторий: обновление товара (UPDATE) ↗
31. 🗃️ 030 Command handler: обновление товара ↗
32. 🗃️ 031 HTTP handler: PUT-запрос ↗
33. 🗃️ 032 Маршрут PUT /catalog-items ↗
34. 🗃️ 033 [ТЗ] Удаление товара ↗
35. 🗃️ 034 [ТЗ] Поиск по бренду ↗
36. 🗃️ 035 Пагинация: Pagination и QueryArgs ↗
37. 🗃️ 036 Фильтрация и сортировка: введение ↗
38. 🗃️ 037 Query handler: пагинация (V2) ↗
39. 🗃️ 038 HTTP handler: пагинация (V2) ↗
40. 🗃️ 039 Маршрут GET /v2/catalog-items, тестирование пагинации ↗
41. 🗃️ 040 Автомиграции при старте (golang-migrate) ↗
42. 🗃️ 041 Финал каталога и итоговые правки ↗
43. 🗃️ Саморефлексия ↗

Корзина покупок

23 урока
1. 🗑️ 042 PostgreSQL для Basket в Docker Compose ↗
2. 🗑️ 043 Gin-сервер и health-check для Basket ↗
3. 🗑️ 044 Миграции Basket и автозапуск ↗
4. 🗑️ 045 Доменные модели: ShoppingCart, ShoppingCartItem ↗
5. 🗑️ 046 Репозиторий: сохранение корзины (транзакция) ↗
6. 🗑️ 047 Command handler: сохранение корзины ↗
7. 🗑️ 048 HTTP handler: POST /cart ↗
8. 🗑️ 049 Маршрутизация API v1: /cart ↗
9. 🗑️ 050 Инициализация слоёв и DI ↗
10. 🗑️ 051 Валидация моделей (go-playground/validator) ↗
11. 🗑️ 052 Middleware: централизованная обработка ошибок ↗
12. 🗑️ 053 Интеграция ErrorHandlerMiddleware ↗
13. 🗑️ 054 Репозиторий: получение корзины ↗
14. 🗑️ 055 Query handler: получение корзины ↗
15. 🗑️ 056 HTTP handler: GET /cart/:accountName ↗
16. 🗑️ 057 Маршрут GET /cart/:accountName ↗
17. 🗑️ 058 Кастомный тип NotFoundError ↗
18. 🗑️ 059 [ТЗ] Удаление корзины ↗
19. 🗑️ 060 Redis-контейнер для кэширования ↗
20. 🗑️ 061 RedisCartRepository ↗
21. 🗑️ 062 Интеграция Redis ↗
22. 🗑️ 063 Dockerfile и compose-prod для Basket ↗
23. 🗑️ Саморефлексия ↗

Окончание

1 урок
1. Итоги ↗

Промоакции

31 урок
1. 🏷️ 064 MySQL-контейнер для Promotion ↗
2. 🏷️ 065 Подключение к MySQL и автомиграции ↗
3. 🏷️ 066 Миграция: таблица promos и seed-данные ↗
4. 🏷️ 067 Protocol Buffers: greet.proto и кодогенерация ↗
5. 🏷️ 068 Реализация GreeterService (gRPC) ↗
6. 🏷️ 069 gRPC-сервер с graceful shutdown ↗
7. 🏷️ 070 gRPC Reflection и тестирование ↗
8. 🏷️ 071.1 gRPC метод Add (практика) ↗
9. 🏷️ 071.2 Proto-контракт ↗
10. 🏷️ 072 Доменная модель ↗
11. 🏷️ 073 Интерфейс PromotionRepository ↗
12. 🏷️ 074 Реализация FindByCatalogItem ↗
13. 🏷️ 075 Реализация обработчика promotion/queries ↗
14. 🏷️ 076 gRPC-сервис PromoService: заглушка ↗
15. 🏷️ 077 Реализация GetPromoByCatalogItem ↗
16. 🏷️ 078 Интеграция PromoService в main ↗
17. 🏷️ 079 Proto: CreatePromo RPC ↗
18. 🏷️ 080 Репозиторий: вставка промоакции ↗
19. 🏷️ 081 Command handler: создание промоакции ↗
20. 🏷️ 082 gRPC эндпоинт CreatePromo ↗
21. 🏷️ 083 Интеграция CreatePromoHandler и DI ↗
22. 🏷️ 084 Unique-ограничение и обработка дубликатов ↗
23. 🏷️ 085 UpdatePromo: полный цикл ↗
24. 🏷️ 086 [ТЗ] Удаление промоакции ↗
25. 🏷️ 087 gRPC-клиент в SaveCartHandler: применение скидок ↗
26. 🏷️ 088 Интеграция gRPC-клиента в Basket ↗
27. 🏷️ 089 Dockerfile и compose-prod для Promotion ↗
28. 🏷️ 090.1 Проблема: БД не готова при старте ↗
29. 🏷️ 090.2 Утилита WaitForDB с retry-логикой ↗
30. 🏷️ 091 Интеграция WaitForDB во все сервисы ↗
31. 🏷️ Саморефлексия ↗

Оформление заказов

25 уроков
1. 🚚 092 PostgreSQL для Checkout и миграции ↗
2. 🚚 093 Конфигурация и запуск миграций ↗
3. 🚚 094 Gin-сервер и health-check для Checkout ↗
4. 🚚 095 Доменная модель: Order, Value Objects, Enums ↗
5. 🚚 096 Интерфейс и реализация OrderRepository ↗
6. 🚚 097 Репозиторий: получение заказа с позициями ↗
7. 🚚 098 Репозиторий: поиск заказов по аккаунту ↗
8. 🚚 099 Репозиторий: создание заказа (транзакция) ↗
9. 🚚 100 Query handler: заказ по ID ↗
10. 🚚 101 HTTP handler: GET /orders/:id ↗
11. 🚚 102 Маршрут и DI для Checkout ↗
12. 🚚 103 [ТЗ] Заказы по аккаунту ↗
13. 🚚 104 RabbitMQ-контейнер в Docker Compose ↗
14. 🚚 105 Структура messaging: заготовки ↗
15. 🚚 106 BaseIntegrationEvent и OrderSubmittedEvent ↗
16. 🚚 107 RabbitMQ Publisher: exchange, queue, publish ↗
17. 🚚 108 Command handler: CheckoutCart и публикация события ↗
18. 🚚 109 HTTP handler: POST /cart/checkout ↗
19. 🚚 110 Маршрут checkout и интеграция RabbitMQ ↗
20. 🚚 111 RabbitMQ Consumer: подключение и обработка ↗
21. 🚚 112 ProcessOrderSubmissionHandler: создание заказа ↗
22. 🚚 113 OrderSubmittedConsumer: маппинг события в команду ↗
23. 🚚 114 Интеграция consumer в Checkout с graceful shutdown ↗
24. 🚚 115 Dockerfile и compose-prod для Checkout ↗
25. 🚚 Саморефлексия ↗

Мониторинг и инфраструктура

16 уроков
1. 📊 116.1 Введение в Prometheus и Grafana ↗
2. 📊 116.2 Пакет metrics: HTTP, gRPC, DB, RabbitMQ ↗
3. 📊 117 Gin Middleware для Prometheus-метрик ↗
4. 📊 118 gRPC-интерцепторы метрик ↗
5. 📊 119 Метрики в Catalog-сервисе ↗
6. 📊 120 Метрики в Promotion-сервисе ↗
7. 📊 121 Конфигурация Prometheus (prometheus.yml) ↗
8. 📊 122 Datasource Grafana для Prometheus ↗
9. 📊 123 Prometheus и Grafana в compose-prod ↗
10. 📊 124.1 Демо: дашборды Prometheus и Grafana ↗
11. 📊 124.2 Grafana-дашборды: Catalog и Promotion ↗
12. 📊 125 Нагрузочное тестирование с k6 (HTTP) ↗
13. 📊 126 Тюнинг пула соединений PostgreSQL ↗
14. 📊 127 k6: нагрузочный тест gRPC ↗
15. 📊 128 Portainer: управление контейнерами ↗
16. 📊 Саморефлексия ↗