Модуль 7.1: Основы языка Go
Переменные, типы и константы
Как объявлять переменные в Go: var vs :=, базовые типы, константы и iota — с мостами на TypeScript
Управление потоком: if, switch, for
Единственный цикл for во всех формах, switch без break, и почему в Go нет while — всё через for
Указатели и память
Адреса памяти, разыменование и передача по значению vs по указателю — ключевое новое понятие для фронтенд-разработчика
Функции
Множественный возврат значений, variadic-функции, функции как значения и замыкания — мощь функционального Go
Массивы и слайсы под капотом
Как устроены слайсы внутри (ptr/len/cap), почему append может удивить и как избежать баг aliasing — частый вопрос на собесе
Map
Создание, проверка ключа через comma-ok, удаление, итерация, пакет maps — хеш-таблицы в Go.
Структуры и методы
Структуры как замена классам, методы с приёмником по значению или указателю, embedding вместо наследования и теги для JSON
Интерфейсы и typed nil
Неявная реализация интерфейсов, type assertion, пустой интерфейс any — и коварная ловушка typed nil, которая ломает проверку на nil
ООП в Go: композиция вместо наследования
Инкапсуляция через заглавные буквы, полиморфизм через интерфейсы, композиция через embedding — ООП без классов и наследования
Ошибки
Явный возврат ошибок вместо try/catch, оборачивание через %w, errors.Is/As и когда использовать panic — философия Go
Практика: модели сервиса «Слот»
Финальная практика модуля: строим доменный слой сервиса бронирования «Слот» — типы, структуры, интерфейс репозитория, обработка ошибок.