Раздел 22 · Go

Заключительный урок junior-трека: чек-лист и куда дальше

junior~35 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Перед этим уроком

Заключительный урок junior-трека: чек-лист и куда дальше

Поздравляю, ты прошёл 13 уроков junior-трека по Go. Этот короткий заключительный урок собирает три вещи:

  1. Самопроверка, чек-лист “что я должен знать”, прогоняй пока не ответишь без подглядывания.
  2. Pet-проект, на котором интегрируешь весь junior-материал в один работающий артефакт.
  3. Дорога дальше, куда идти за M/MS уровнем (он в этом же разделе, в уроках 14-28).

После этого урока junior-трек закрыт, ты переходишь в 14-weather-cli, а от него к идиоматике, internals и concurrency.

1. Чек-лист: 12 вопросов на самопроверку

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

Уровень “знаю синтаксис”

  1. Какие 4 сегмента у программы в памяти и что куда попадает? (01 §3)

  2. Чему равно len("ёж") и почему? (03 §1)

  3. Чем отличаются byte и rune? (03 §2)

  4. Что такое zero value и почему важно сделать его полезным? (07 §1)

Уровень “понимаю модель”

  1. Передаётся ли slice в функцию по ссылке? Сформулируй точно. (02 §3)

  2. Как выбрать value vs pointer receiver в 4 пунктах? (07 §2, 09 §3)

  3. В чём разница между type assertion v.(T) и конвертацией T(v)? (10 §6)

  4. Что такое typed-nil ловушка с интерфейсом? (10 §8)

Уровень “пишу идиоматично”

  1. Когда errors.Is, когда errors.As, когда errors.Join? (11 §7-8)

  2. Три правила defer. (11 §4)

  3. Когда нужны generics, когда хватает интерфейса? (12 §5)

  4. Что делает comparable и какие типы под него не подходят? (12 §3)

Если на 10 из 12 ответил без затыка, junior-уровень закрыт. Если меньше, не паникуй: вернись и просмотри тёмные места ещё раз. Это нормально.

2. Что ты теперь умеешь

После 13 уроков ты:

  • Понимаешь модель памяти Go. Стек, куча, header у slice/string/map, escape analysis в одну минуту.
  • Пишешь идиоматичные структуры и методы. Знаешь, что value vs pointer receiver не выбираешь по эстетике, а по правилу.
  • Работаешь со строками без сюрпризов. Не путаешь len в байтах и количество символов, не пишешь + в цикле.
  • Печатаешь и парсишь корректно. Printf верба, bufio.Scanner, strconv, fmt.Errorf с %w.
  • Строишь домен через композицию. Aggregate root с приватными коллекциями, value object для дробей, интерфейс-стратегия.
  • Используешь интерфейсы как контракты. io.Reader, error, fmt.Stringer, маленькие интерфейсы из 1-2 методов.
  • Обрабатываешь ошибки явно. Sentinel, кастомные типы, обёртывание через %w, errors.Is/As/Join.
  • Пишешь generic-контейнеры. Stack, Set, Cache на параметрах-типах, cmp.Ordered, comparable, свои constraint-ы.
  • Отлаживаешь дебаггером, не только print-ом. dlv, breakpoints, step-in/over.

Этого достаточно, чтобы сесть писать боевой код в команде. Junior-роли в основном про “уверенно владею языком”, это покрыто.

3. Pet-проект как интеграция

Лучший способ закрепить, написать что-то небольшое от и до. Подойдёт любой из вариантов на 200-400 строк:

ИдеяТемы из трека
Todo CLI с файловым хранением (JSON)структуры, encoding/json, ошибки, defer
HTTP-погодная утилита (отдай URL, получи отчёт)интерфейсы, errors, форматирование
Файловый дедуплицикатор (find + sha256)crypto, io.Reader, generics для cache
Парсер CSV в табличку с фильтромстроки, fmt, ошибки, type-switch
Markdown to HTML конвертер упрощённыйstrings, regexp, defer, errors
Bot для Telegram, который отвечает на /jokeинтерфейсы, struct embedding, generic-кэш

Минимальный набор тем, которые pet должен зацепить:

  • Минимум 3 типа-структуры, у которых есть методы.
  • Минимум 1 интерфейс с двумя реализациями.
  • Обработка ошибок через error, обёртывание в %w хотя бы раз.
  • Тесты на одном-двух пакетах (go test ./... зелёным).
  • Линтер пройден (golangci-lint run).
  • Один defer для закрытия ресурса.

Не делай pet-проект “громоздким”. Цель не “написать конкурент Slack”, а “увидеть, что все знания работают вместе”.

премиум-урок

Продолжение в премиуме: 1 200 ₽ в месяц или 10 000 ₽ в год. Вместе с ним серверные проверки задач и школьные токены AI-коуча.

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