Пакет context в Go. Отмена и таймауты.

Ответ

context.Context передает значения, сигнал отмены и дедлайн. context.Background() - корневой. WithCancel, WithTimeout, WithDeadline - производные контексты; при отмене родителя отменяются дочерние. WithValue - ключ и значение (осторожно с типами ключей). В HTTP handler передают r.Context(); при долгих операциях создают контекст с таймаутом. Проверка: ctx.Done(), ctx.Err().

ctx, cancel := context.WithTimeout(ctx, 10*time.Second)
defer cancel()
select {
case <-ctx.Done():
    return ctx.Err()
case result := <-ch:
    return result
}
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.