Введение в основы Go

Этот модуль нужен, чтобы собрать рабочий фундамент языка. В Go немного синтаксиса, но почти каждая базовая вещь влияет на то, как потом пишутся функции, API, конкурентный код и архитектура сервиса.

Здесь важно не просто запомнить, что такое int, slice или interface. Важно понять модель: что копируется, где лежат данные, когда значение изменяется на месте, а когда вы работаете только с копией заголовка.


Что будет внутри

  • скалярные типы, строки, rune, byte, zero values;
  • массивы и слайсы: длина, ёмкость, backing array, append;
  • map: устройство, ограничения ключей, порядок обхода;
  • структуры, методы, указатели, встраивание;
  • интерфейсы как контракт поведения, а не как иерархия классов.

Как понять, что модуль освоен

Вы уверенно объясняете, почему слайс может изменить исходный массив, почему map нельзя читать и писать из разных горутин без синхронизации, чем метод на значении отличается от метода на указателе и почему маленький интерфейс обычно лучше большого.

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


Рабочие ориентиры

  • Сначала думайте о значениях и копиях, потом о синтаксисе.
  • Не используйте интерфейс заранее. Вводите его там, где уже появился реальный потребитель поведения.
  • Если поведение слайса или map кажется странным, нарисуйте: переменная -> заголовок -> данные.

Практика

Quiz+10 XP

Что лучше всего описывает главный фокус первого модуля?

  • Запомнить как можно больше синтаксических конструкций Go
  • Понять модель значений, копий, заголовков и данных
  • Сразу перейти к фреймворкам и HTTP-сервисам
  • Научиться писать только конкурентный код