Тема 14. Продвинутый Go (Golang Advanced)¶
После основ Go (тема 13) рассматриваем «взрослые» темы: конкурентность, контексты, сетевой стек, работу с БД и инструменты профилирования. Это то, ради чего Go и был придуман.
Лекции¶
- Конкурентность: горутины, каналы,
select— горутины и их жизненный цикл, каналы (buffered/unbuffered),select,sync.WaitGroup/Mutex/RWMutex/Once,sync/atomic, паттерны (worker pool, fan-in/fan-out, pipeline). - Context: отмена, таймауты, метаданные —
context.Context,WithCancel/WithTimeout/WithDeadline/WithValue, идиомы распространения и слушания отмены. - HTTP-клиент и HTTP-сервер —
net/http, production-ready клиент сTimeout, маршрутизация Go 1.22+, middleware, graceful shutdown,httptest. - Файлы, JSON и БД (
database/sql) —os/io/bufio,path/filepath,embed.FS,encoding/jsonс тегами и кастомизацией,database/sql+ драйверы, транзакции, защита от SQL-инъекций. - Бенчмарки, профилирование, race detector —
Benchmark*,benchstat,pprof(CPU/heap/goroutine),net/http/pprof,-race, escape analysis,sync.Pool.
Что дальше¶
Курс по Go завершён. Применяйте полученное в практическом задании (большой проект — см. Практика) и в собственных проектах. Дальнейшие шаги:
- gRPC и Protocol Buffers — продвинутый межсервисный обмен;
- OpenTelemetry — трейсинг, метрики, логи в одном стеке;
- Wire или fx — DI для больших проектов;
- Cobra + Viper — CLI с конфигурацией;
- Темporal или Asynq — оркестрация long-running задач.
Лучший способ освоить Go в реальности — читать чужой код (Kubernetes, Docker, Terraform) и писать собственные сервисы.