Перейти к содержимому

Курс: Язык программирования 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. Основы языка

  1. Введение в Go и кроссплатформенный инструментарий.
  2. Переменные, константы и базовые типы.
  3. Операторы и управление потоком выполнения.
  4. Функции, несколько результатов, closures и defer.

Блок II. Данные и память

  1. Массивы и slices.
  2. Maps, строки, байты и Unicode.
  3. Указатели, структуры и методы.

Блок III. Архитектура программ

  1. Пакеты, модули, зависимости и организация проекта.
  2. Интерфейсы, композиция и embedding.
  3. Обработка ошибок, ресурсы, panic и recover.
  4. Обобщённое программирование: type parameters и constraints.

Блок IV. Качество и конкурентность

  1. Тестирование, benchmarks, fuzzing и инструменты качества.
  2. Goroutines, channels и select.
  3. Синхронизация, context и итоговый HTTP-сервис.

Сквозной проект

В течение курса студенты постепенно разрабатывают систему управления задачами:

  1. консольное приложение;
  2. модели данных и операции над ними;
  3. сохранение в JSON;
  4. разделение на пакеты;
  5. интерфейс хранилища;
  6. обработка ошибок;
  7. автоматические тесты;
  8. конкурентно безопасное хранилище;
  9. HTTP API и корректное завершение сервера.

Методические принципы

  • примеры сравниваются с Python, когда это помогает понять статическую типизацию;
  • код остаётся переносимым между Linux, macOS и Windows;
  • системные пути формируются через path/filepath;
  • задания не требуют Bash-утилит или PowerShell-команд внутри Go-программ;
  • сначала изучается простой последовательный код, затем конкурентность;
  • композиция и маленькие интерфейсы рассматриваются вместо наследования;
  • все проекты форматируются gofmt и проверяются через go test ./....