ЛентаСтатьиЗаметкиКурсы
Рецепты
← Все курсы

Go Foundation

GoBackendHTTPPostgreSQLTestingConcurrency

Курс 1: Go Foundation

Добро пожаловать в мир разработки на Go!

Этот курс станет вашим фундаментом для создания надёжных и производительных бэкенд-сервисов. Мы не просто изучаем синтаксис — мы формируем инженерное мышление с первого дня.


О курсе

Цель: дать прочную базу языка Go и подготовить к созданию реальных сервисов.

Подход: каждая тема привязана к практическим задачам. Вы не просто читаете — вы пишете код, запускаете тесты, видите результат.

Результат: после курса вы уверенно пишете на Go, понимаете идиомы языка и готовы к Курсу 2.


Для кого этот курс

АудиторияЧто получит
Начинающие разработчикиПервые шаги в программировании на Go
Разработчики, переходящие на GoБыстрое освоение синтаксиса и идиом
Backend-инженерыПонимание преимуществ Go для сервисов

Предварительные требования

Обязательные

  • Базовое понимание алгоритмов и структур данных
  • Опыт работы с командной строкой
  • Установленный Go на вашем компьютере

Желательные

  • Опыт программирования на любом языке
  • Понимание клиент-серверной архитектуры
  • Английский язык на уровне чтения документации

Программа курса

Модуль 1: Введение в Go и экосистема

Файл: 01-introduction-to-go.md

  • История и философия Go
  • Установка и настройка окружения
  • Инструменты: go, gopls, gofmt
  • Структура проекта и модули
  • Первая программа

Практика: создать и запустить "Hello, World!", настроить окружение


Модуль 2: Базовые понятия языка

Файл: 02-language-fundamentals.md

  • Переменные, константы, типы данных
  • Управляющие конструкции (if, for, switch)
  • Функции и множественные возвращаемые значения
  • Массивы, слайсы, мапы
  • Структуры и методы

Практика: реализовать калькулятор или обработчик данных


Модуль 3: Указатели, интерфейсы и композиция

Файл: 03-pointers-interfaces-composition.md

  • Семантика указателей
  • Интерфейсы в Go
  • Встраивание и композиция
  • Дженерики (основы)

Практика: спроектировать интерфейсы для репозитория данных


Модуль 4: Обработка ошибок

Файл: 04-error-handling.md

  • Тип error и паттерны обработки
  • Обёртывание ошибок
  • errors.Is() и errors.As()
  • Паники и восстановление

Практика: реализовать слой обработки ошибок для сервиса


Модуль 5: Тестирование

Файл: 05-testing-basics.md

  • Пакет testing
  • Table-driven тесты
  • Моки и фейки
  • Покрытие кода
  • go test -race

Практика: написать тесты для бизнес-логики калькулятора


Модуль 6: Конкурентность: горутины и каналы

Файл: 06-concurrency-basics.md

  • Горутины и планировщик
  • Каналы: буферизированные и нет
  • select и таймауты
  • Паттерны: worker pool, fan-out/fan-in

Практика: реализовать параллельный обработчик файлов


Модуль 7: Context и отмена операций

Файл: 07-context-and-cancellation.md

  • context.Context и его роль
  • context.WithCancel, WithTimeout, WithDeadline
  • Распространение контекста
  • Отмена и дедлайны

Практика: добавить таймауты и отмену в обработчик файлов


Модуль 8: Создание Web API сервиса

Файл: 08-http-server.md

  • net/http и http.ServeMux
  • Хэндлеры и роуты
  • Жизненный цикл запроса/ответа
  • Кодирование/декодирование JSON

Практика: создать простой REST API с 2-3 эндпоинтами


Модуль 9: Middleware и валидация

Файл: 09-middleware-and-validation.md

  • Middleware-паттерн
  • Логирование запросов
  • Валидация входных данных
  • Обработка ошибок в хэндлерах

Практика: добавить логирование и валидацию в API


Модуль 10: Работа с PostgreSQL: основы

Файл: 10-postgresql-basics.md

  • Подключение к базе данных
  • CRUD операции
  • Пул соединений
  • Транзакции

Практика: подключить БД к сервису и реализовать хранение данных


Модуль 11: Миграции и транзакции

Файл: 11-migrations-and-transactions.md

  • Миграции схемы базы данных
  • Инструменты миграций (goose)
  • Атомарность операций
  • Уровни изоляции

Практика: добавить миграции и транзакции в сервис


Модуль 12: Практический проект

Файл: 12-practical-project.md

Цель: закрепить все знания курса в реальном проекте

Проект: Мини-сервис для управления задачами

Неделя 1: Консольное приложение

  • Аргументы командной строки
  • Обработка файлов
  • Параллельная обработка

Неделя 2: HTTP API

  • Создание эндпоинтов
  • Обработка запросов/ответов
  • Валидация данных

Неделя 3: База данных

  • Подключение к PostgreSQL
  • Миграции
  • Транзакции

Неделя 4: Финализация

  • Тестирование
  • Рефакторинг
  • Документация

Критерии приёмки:

  • Реализован функционал по всем модулям курса
  • Написаны тесты с покрытием > 60%
  • Код отформатирован и проходит линтер
  • Проект запускается и работает

Структура проекта курса

course-1-go-foundation/
├── README.md                          # Этот файл
├── 01-introduction-to-go.md
├── 02-language-fundamentals.md
├── 03-pointers-interfaces-composition.md
├── 04-error-handling.md
├── 05-testing-basics.md
├── 06-concurrency-basics.md
├── 07-context-and-cancellation.md
├── 08-http-server.md
├── 09-middleware-and-validation.md
├── 10-postgresql-basics.md
├── 11-migrations-and-transactions.md
└── 12-practical-project.md            # Практический проект

Как проходить курс

Шаг 1: Изучите теорию

Прочитайте материал модуля. Не пропускайте объяснения — они формируют правильное понимание.

Шаг 2: Наберите примеры

Не копируйте код. Набирайте вручную, обращайте внимание на синтаксис и идиомы.

Шаг 3: Выполните практику

Решите практические задания. Если застряли — вернитесь к теории, но не сдавайтесь сразу.

Шаг 4: Проверьте себя

Ответьте на вопросы в конце модуля. Если что-то непонятно — перечитайте соответствующий раздел.

Шаг 5: Переходите дальше

Не переходите к следующему модулю, пока не уверены в текущем.

Шаг 6: Выполните практический проект

После завершения всех модулей выполните практический проект для закрепления навыков.


Рекомендации по обучению

Делайте

✅ Пишите код каждый день, даже 30 минут ✅ Используйте gofmt и go vet с первого дня ✅ Читайте ошибки компилятора — они очень информативны ✅ Обращайтесь к документации: go.dev ✅ Обсуждайте решения с другими ✅ Выполняйте практический проект в конце курса

Не делайте

❌ Не копируйте код без понимания ❌ Не пропускайте практические задания ❌ Не переходите дальше, если не поняли текущее ❌ Не бойтесь ошибаться — это часть обучения ❌ Не пропускайте практический проект


Инструменты

Обязательные

  • Go — последняя стабильная версия
  • Редактор кода — рекомендуется VS Code с расширением Go
  • Терминал — для запуска команд

Рекомендуемые

  • gopls — language server для автодополнения
  • dlv — отладчик
  • golangci-lint — агрегатор линтеров

Установка

bash
# Установка Go (Linux)
wget https://go.dev/dl/go1.22.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz

# Проверка
go version

# Установка инструментов
go install golang.org/x/tools/gopls@latest
go install github.com/go-delve/delve/cmd/dlv@latest

Оценка прогресса

Критерии успеха

МодульКритерий
1Создана и запущена первая программа
2Реализован калькулятор с тестами
3Спроектированы интерфейсы для сервиса
4Реализован слой обработки ошибок
5Написаны тесты с покрытием > 60%
6Реализован параллельный обработчик
7Добавлены таймауты и отмена операций
8Создан работающий HTTP API
9Добавлено логирование и валидация
10Подключена база данных
11Добавлены миграции и транзакции
12Выполнен практический проект

Финальная проверка

После завершения всех модулей вы должны:

  • Уверенно писать код на Go
  • Понимать идиомы языка
  • Уметь писать тесты
  • Понимать конкурентность
  • Уметь создавать простые HTTP-сервисы
  • Уметь работать с базами данных
  • Выполнить практический проект

Что дальше?

После успешного завершения курса вы будете готовы к:

Курс 2: Go Backend Developer

Что изучите:

  • Проектирование REST API
  • Clean Architecture
  • Продвинутая работа с БД
  • Наблюдаемость и безопасность
  • Практический проект

Предварительные требования:

  • ✅ Завершённый Курс 1
  • ✅ Понимание основ языка
  • ✅ Опыт написания тестов

Начните свой путь в разработке на Go! Удачи! 🚀

Программа курса

1

Модуль 1. Введение в Go и экосистема

→
2

Модуль 2. Базовые понятия языка

→
3

Модуль 3. Указатели, интерфейсы и композиция

→
4

Модуль 4. Обработка ошибок

→
5

Модуль 5. Тестирование

→
6

Модуль 6. Конкурентность: горутины и каналы

→
7

Модуль 7. Context и отмена операций

→
8

Модуль 8. Создание Web API сервиса

→
9

Модуль 9. Middleware и валидация

→
10

Модуль 10. Работа с PostgreSQL: основы

→
11

Модуль 11. Миграции и транзакции

→
12

Модуль 12: Практический проект

→
Начать обучение