WithCancelCause и получение причины отмены?

Ответ

WithCancelCause возвращает контекст и cancel(cause). При вызове cancel(err) причина сохраняется. context.Cause(ctx) возвращает эту ошибку или nil. Удобно различать отмену по таймауту, по пользователю или по ошибке дочерней операции.

ctx, cancel := context.WithCancelCause(parent)
cancel(fmt.Errorf("reason"))
if err := context.Cause(ctx); err != nil { ... }
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.