Что такое контекст (context) в Go?

Middle
2.4k просмотров
AFK Offer AI

Context передаёт дедлайны, таймауты, отмену и values через цепочку вызовов. Всегда первый аргумент функции: func DoSomething(ctx context.Context, ...).

Виды: context.Background() — корневой, context.WithCancel — ручная отмена, context.WithTimeout — автоотмена по времени, context.WithValue — передача данных (используй осторожно, только для request-scoped данных).

ctx, cancel := context.WithTimeout(ctx, 5*time.Second)
defer cancel()
result, err := db.QueryContext(ctx, query)

Проверяй ctx.Err() или <-ctx.Done() для реакции на отмену.

Следующий вопрос

Как устроены каналы в Go?