Ответ
Основные признаки перехода на Middle:
- Самостоятельно решаешь типовые задачи без помощи коллег
- Понимаешь стандартную библиотеку и базовые пакеты (net/http, sync, context и т.д.)
- Умеешь писать тестируемый и поддерживаемый код
- Можешь проектировать небольшие сервисы
- Понимаешь конкурентность и умеешь применять каналы, мьютексы
- Разбираешься в профилировании и оптимизации
Пример middle-кода:
func ProcessRequests(ctx context.Context, requests <-chan Request) {
for {
select {
case req := <-requests:
go func(r Request) {
if err := validate(r); err != nil {
log.Printf("invalid request: %v", err)
return
}
process(r)
}(req)
case <-ctx.Done():
return
}
}
}