Язык и его конкурентность: типы и нулевые значения, слайсы и карты, интерфейсы и ошибки, дженерики и итераторы, горутины и каналы, контекст и синхронизация, планировщик, утечки и гонки, грациозное завершение
Основы Go
Чем Go отличается от Python и Java, нулевые значения и iota, слайсы и карты, строки и руны, методы и получатели, интерфейсы и ловушка nil, ошибки и обёртки, defer и panic, дженерики, escape-анализ, встраивание, пакеты, итераторы, сравнимость типов
Конкурентность
Горутины и каналы, select и context, мьютексы и WaitGroup, errgroup, утечки горутин и гонки данных, модель памяти и atomic, пул воркеров и конвейеры, sync.Once и sync.Pool, ограничение параллелизма, планировщик, грациозное завершение, тестирование через synctest
Тулчейн и модули
Устройство модуля и go.sum, выбор минимальных версий, go get и go install, суффикс мажорной версии, контрольные суммы и цепочка поставок, прокси и кеш, replace и вендоринг, рабочие пространства, обновление версии Go, мультимодульный репозиторий, разбор графа зависимостей, совместимость публичного API, обновление зависимостей, приватный контур
Сборка и деплой
go build и go install, кросс-компиляция, условная компиляция и build-теги, флаги компоновщика, CGO и статическая линковка, минимальные образы, кеш сборки, воспроизводимость, go:embed, паспорт бинарника, оптимизация по профилю, поиск уязвимостей, порядок инициализации
Тесты, профилирование, линтеры
Устройство теста и табличные тесты, помощники и уборка, подмена зависимостей, golden-файлы, покрытие, httptest, фаззинг, бенчмарки и benchstat, профилирование процессора и памяти, go vet и golangci-lint, интеграционные тесты, тесты в CI
Рантайм и эксплуатация
Память процесса и RSS, сборщик мусора и его настройка, лимиты контейнера и OOMKilled, метрики рантайма, slog, разбор паники и посмертный анализ, непрерывное профилирование, трассировка запросов, пул соединений к базе, go tool trace, диагностика задержки, обновление Go, поведение на пределе нагрузки