Go Foundation
Курс 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! Удачи! 🚀