Введение в основы Go
Этот модуль нужен, чтобы собрать рабочий фундамент языка. В Go немного синтаксиса, но почти каждая базовая вещь влияет на то, как потом пишутся функции, API, конкурентный код и архитектура сервиса.
Здесь важно не просто запомнить, что такое int, slice или interface. Важно понять модель: что копируется, где лежат данные, когда значение изменяется на месте, а когда вы работаете только с копией заголовка.
Что будет внутри
- скалярные типы, строки,
rune,byte, zero values; - массивы и слайсы: длина, ёмкость, backing array,
append; map: устройство, ограничения ключей, порядок обхода;- структуры, методы, указатели, встраивание;
- интерфейсы как контракт поведения, а не как иерархия классов.
Как понять, что модуль освоен
Вы уверенно объясняете, почему слайс может изменить исходный массив, почему map нельзя читать и писать из разных горутин без синхронизации, чем метод на значении отличается от метода на указателе и почему маленький интерфейс обычно лучше большого.
Ещё один хороший признак: вы можете прочитать незнакомый Go-код без ощущения, что язык что-то скрывает. В Go многое явно, но эта явность начинает помогать только после понимания базовой модели данных.
Рабочие ориентиры
- Сначала думайте о значениях и копиях, потом о синтаксисе.
- Не используйте интерфейс заранее. Вводите его там, где уже появился реальный потребитель поведения.
- Если поведение слайса или
mapкажется странным, нарисуйте: переменная -> заголовок -> данные.
Практика
Что лучше всего описывает главный фокус первого модуля?