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() для реакции на отмену.