Go: язык

В этой теме ты разберёшь базовые значения Go и научишься выводить поведение программы из типов, правил копирования и времени вычисления.

  1. 1.1 Типы и базовые конструкции

    Разберём, что копирует присваивание и как тип задаёт допустимые операции. Затем свяжем zero value, переполнение, явные конверсии, константы и выравнивание структур с правилами языка.

  2. 1.2 Массивы и слайсы

    Слайс передали в функцию. Изменение элемента видно снаружи, а после append результат зависит от запаса ёмкости. Маленький подслайс может удерживать весь исходный буфер. По модели заголовка и общего массива разберём, когда копировать данные и как отделить область для роста.

  3. 1.3 Мапы

    Разберём контракт map и отделим гарантии языка от устройства конкретной версии рантайма.

  4. 1.4 Строки

    Свяжем байтовое представление строки с Unicode, стоимостью конверсий и удержанием памяти.

  5. 1.5 Интерфейсы и «ООП» в Go

    Покажем, как удовлетворение интерфейсу определяется набором методов и почему интерфейсное значение может быть ненулевым при nil-указателе.

  6. 1.6 Функции, defer, panic/recover

    Проследим момент вычисления замыканий и defer, а затем отделим управляемую ошибку от аварийного раскручивания стека.

  7. 1.7 Дженерики

    Разберём параметры типов через множества допустимых типов и сравним дженерик с интерфейсом поведения.

  8. 1.8 Модули, пакеты, инструментарий

    Проследим, как Go выбирает версии модулей и почему пакет, модуль и репозиторий имеют разные границы.