Курс: Язык программирования Go
Целевая аудитория
Студенты, знакомые с основами Python: переменными, условиями, циклами, функциями и коллекциями. Предварительный опыт системного или серверного программирования не требуется.
Платформа
Курс кроссплатформенный. Все примеры должны запускаться без изменения исходного кода на Linux, macOS и Windows.
- Go 1.27 или новее;
- Linux: Bash или Zsh;
- macOS: Zsh, процессоры Apple Silicon или Intel;
- Windows: PowerShell;
- рекомендуемый редактор: Visual Studio Code с официальным расширением Go;
- основные инструменты:
go,gofmt,go test,go vet,gopls.
Цель курса
Освоить Go от базового синтаксиса до создания структурированных, протестированных и конкурентно безопасных программ. Научиться разрабатывать CLI-приложения и HTTP-сервисы, работать с пакетами и модулями, обрабатывать ошибки и применять goroutines и channels.
Структура курса (14 лекций)
Блок I. Основы языка
- Введение в Go и кроссплатформенный инструментарий.
- Переменные, константы и базовые типы.
- Операторы и управление потоком выполнения.
- Функции, несколько результатов, closures и
defer.
Блок II. Данные и память
- Массивы и slices.
- Maps, строки, байты и Unicode.
- Указатели, структуры и методы.
Блок III. Архитектура программ
- Пакеты, модули, зависимости и организация проекта.
- Интерфейсы, композиция и embedding.
- Обработка ошибок, ресурсы,
panicиrecover. - Обобщённое программирование: type parameters и constraints.
Блок IV. Качество и конкурентность
- Тестирование, benchmarks, fuzzing и инструменты качества.
- Goroutines, channels и
select. - Синхронизация,
contextи итоговый HTTP-сервис.
Сквозной проект
В течение курса студенты постепенно разрабатывают систему управления задачами:
- консольное приложение;
- модели данных и операции над ними;
- сохранение в JSON;
- разделение на пакеты;
- интерфейс хранилища;
- обработка ошибок;
- автоматические тесты;
- конкурентно безопасное хранилище;
- HTTP API и корректное завершение сервера.
Методические принципы
- примеры сравниваются с Python, когда это помогает понять статическую типизацию;
- код остаётся переносимым между Linux, macOS и Windows;
- системные пути формируются через
path/filepath; - задания не требуют Bash-утилит или PowerShell-команд внутри Go-программ;
- сначала изучается простой последовательный код, затем конкурентность;
- композиция и маленькие интерфейсы рассматриваются вместо наследования;
- все проекты форматируются
gofmtи проверяются черезgo test ./....