Основы Golang
О чём курс
«Основы Golang» — продвинутый курс по созданию HTTP API и многопоточности. В курсе вы создадите сервис по укорачиванию ссылок с авторизацией и статистикой.
Требования и содержание
Для прохождения нужно знать основы Golang. Курс рассчитан на тех, кто хочет проектировать и писать API на Golang с базой данных Postgres и ORM Gorm, изучить внутреннее устройство языка и использовать горутины.
Вы изучите Go allocator, Stack, Heap и GC, работу и синхронизацию горутин и обмен данными между ними через каналы. Затем напишете API на чистом пакете http, включая роутинг и обработку запросов и ответов. Для подключения к Postgres через Gorm базу предварительно запустят в Docker; вы напишете все типы CRUD-запросов.
Теорию изучают во время создания API. В курсе также есть упражнения для закрепления знаний.
Чему вы научитесь
- Использовать горутины.
- Понимать внутреннее устройство Golang.
- Разбираться в работе GC и выделении памяти.
- Работать с контекстом.
- Создавать API на Golang.
- Проектировать архитектуру API.
- Работать с Gorm.
- Создавать авторизацию и работать с JWT.
- Работать с middleware.
- Писать CRUD-запросы.
- Писать тесты для API.
Материал построен от простого к сложному. Тариф — «Самостоятельный». Курс обновлён 20 февраля 2026 года.
Программа обучения
- Введение
- 1.1 API на Golang
- 1.2 Как устроен курс
- 1.3 Обзор проекта
- 1.4 Проекты домашних заданий
- 1.5 Обзор курсов
- 1.6 Работа на платформе
- 1.7 AI и тренажёры
- 1.8 Практика на проекте
- 1.9 Рекомендуемый курс
- Настройка окружения
- 2.1 Настройка окружения
- 2.2 Установка Golang
- 2.3 Настройки VSCode
- 2.4 Рекомендуемый курс
- 2.5 Домашнее задание AI
- 2.6 Работа с gitflow
- Работа Go под капотом
- 3.1 Что внутри программы Go
- 3.2 Модель памяти
- 3.3 Stack frames
- 3.4 Heap
- 3.5 Pointer на heap
- 3.6 Go allocator
- 3.7 Пример с Reader
- 3.8 Работа GC
- 3.9 Тест - Работа Go под капотом
- Concurrency
- 4.1 Что такое Goroutine
- 4.2 Запуск Goroutine
- 4.3 Упражнение - Ускорение работы
- 4.4 WaitGroup
- 4.5 Планировщик
- 4.6 Цикл планировщика
- 4.7 Channels
- 4.8 Создание канала
- 4.9 Чтение данных
- 4.10 Закрытие канала
- 4.11 Упражнение - Сумма slice
- 4.12 Обработка ошибок
- 4.13 Select
- 4.14 Тест - Concurrency
- Http server
- 5.1 Выбор HTTP сервера
- 5.2 Простейший сервер
- 5.3 Как работают запросы
- 5.4 Свой ServeMux
- 5.5 Методы и коды ответа
- 5.6 Handler
- 5.7 Тест - Http server
- Архитектура
- 6.1 Структура приложения
- 6.2 Конфигурация
- 6.3 Обзор приложения
- 6.4 Декомпозиция модуля
- 6.5 Упражнение - Модуль авторизации
- 6.6 Передача зависимостей
- 6.7 Ответ от API
- 6.8 Упражнение - Пакет ответа
- 6.9 Тест - Архитектура
- Запрос и валидация
- 7.1 Чтение body
- 7.2 Упражнение - Простая валидация
- 7.3 Regexp
- 7.4 Go validator
- 7.5 Вынос обработчика
- 7.6 Упражнение - Регистрация
- 7.7 Тест - Запрос и валидация
- Подключение базы данных
- 8.1 Установка Docker Desktop
- 8.2 Развёртывание Postgres
- 8.3 Подключение к базе
- 8.4 Выбор ORM
- 8.5 Подключение Gorm
- 8.6 Описание модели
- 8.7 Авто миграции
- 8.8 Тест - Подключение базы данных
- CRUD
- 9.1 Упражнение - Handler ссылок
- 9.2 Параметр запроса
- 9.3 Паттерн репозитория
- 9.4 Создание ссылки
- 9.5 Получение ссылки
- 9.6 Упражнение - Проверка на hash
- 9.7 Изменение ссылки
- 9.8 Удаление ссылки
- 9.9 Упражнение - Проверка наличия
- 9.10 Тест - CRUD
- Middleware
- 10.1 Что такое Middleware
- 10.2 Первый обработчик
- 10.3 WrapperWriter
- 10.4 CORS
- 10.5 Stack middleware
- 10.6 Упражнение - Получение Bearer
- 10.7 Middleware для роутов
- 10.8 Тест - Middleware
- Авторизация
- 11.1 Что такое JWT
- 11.2 Упражнение - Модель пользователя
- 11.3 Упражнение - Репозиторий пользователей
- 11.4 Сервис авторизации
- 11.5 Bcrypt
- 11.6 Упражнение - Логин пользователя
- 11.7 Создание JWT
- 11.8 Упражнение - Финал авторизации
- 11.9 Тест - Авторизация
- Контекст
- 12.1 Что такое контекст
- 12.2 WithTimeout
- 12.3 WithValue
- 12.4 WithCancel
- 12.5 Получение email из JWT
- 12.6 Запись в контекст
- 12.7 Упражнение - Чтение из контекста
- 12.8 Unauthed
- 12.9 Тест - Контекст
- Продвинутая работа с БД
- 13.1 Формирование запроса
- 13.2 Limit и offset
- 13.3 Count
- 13.4 Query параметры
- 13.5 Упражнение - Список ссылок
- 13.6 Один ко многим
- 13.7 Добавление клика
- 13.8 Упражнение - Простое добавление
- 13.9 Правильный DI
- 13.10 Eventbus
- 13.11 Отправка события
- 13.12 Получение события
- 13.13 Упражнение - Финал Eventbus
- 13.14 Упражнение - Handler статистики
- 13.15 Group By
- 13.16 Group By в Gorm
- 13.17 Gorm Session
- 13.18 Тест - Продвинута работа с БД
- Тестирование API
- 14.1 Виды тестирования
- 14.2 Изменение приложения
- 14.3 E2e тест
- 14.4 Упражнение - Отрицательный тест
- 14.5 Подготовка тестового окружения
- 14.6 Предварительные данные
- 14.7 Очистка данных
- 14.8 Unit тесты
- 14.9 Mock данных
- 14.10 Mock базы
- 14.11 Httptest
- 14.12 Mock запросов
- 14.13 Упражнение - Тест регистрации
- 14.14 Отладка тестов
- 14.15 Финал проекта
- 14.16 Тест - Тестирование API
- Заключение
- 15.1 Куда дальше
Теги курса
Другие материалы автора 12
АЛ Антон Ларичев Все материалыОтзывов пока нет. Будьте первым!
Этот курс сейчас в процессе организации складчины. Нажмите кнопку «Записаться» и ожидайте старта — вам придёт уведомление. Когда складчина стартует, в карточке курса будет указан актуальный взнос. Текущая цена пока в процессе формирования и может отличаться от финальной.
Да, мы стремимся, чтобы финальный взнос был не больше ≈10% от оригинальной цены курса. Чем больше участников записывается в складчину, тем ниже выходит взнос для каждого.
Нажмите кнопку «Записаться» и авторизуйтесь на сайте через email (через ту же почту, которую будете использовать для входа). В личном кабинете вас будут ждать инструкции, как пригласить других участников — чем больше людей записалось, тем быстрее стартует складчина и тем ниже взнос. Как только складчина готова к приобретению, вам придёт уведомление.