Заключительный урок junior-трека: чек-лист и куда дальше
Поздравляю, ты прошёл 13 уроков junior-трека по Go. Этот короткий заключительный урок собирает три вещи:
- Самопроверка, чек-лист “что я должен знать”, прогоняй пока не ответишь без подглядывания.
- Pet-проект, на котором интегрируешь весь junior-материал в один работающий артефакт.
- Дорога дальше, куда идти за M/MS уровнем (он в этом же разделе, в уроках 14-28).
После этого урока junior-трек закрыт, ты переходишь в 14-weather-cli, а от него к идиоматике, internals и concurrency.
1. Чек-лист: 12 вопросов на самопроверку
Прогоняй вслух или письменно. Если на любом залип, открывай соответствующий урок и перечитывай раздел.
Уровень “знаю синтаксис”
-
Какие 4 сегмента у программы в памяти и что куда попадает? (01 §3)
-
Чему равно
len("ёж")и почему? (03 §1) -
Чем отличаются
byteиrune? (03 §2) -
Что такое zero value и почему важно сделать его полезным? (07 §1)
Уровень “понимаю модель”
-
Передаётся ли slice в функцию по ссылке? Сформулируй точно. (02 §3)
-
Как выбрать value vs pointer receiver в 4 пунктах? (07 §2, 09 §3)
-
В чём разница между type assertion
v.(T)и конвертациейT(v)? (10 §6) -
Что такое typed-nil ловушка с интерфейсом? (10 §8)
Уровень “пишу идиоматично”
-
Когда
errors.Is, когдаerrors.As, когдаerrors.Join? (11 §7-8) -
Три правила defer. (11 §4)
-
Когда нужны generics, когда хватает интерфейса? (12 §5)
-
Что делает
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-коуча.
Оплата пока не подключена: премиум и курсы открываются промокодом.