Контекст в запросах к БД в Go. Таймаут и отмена.

Ответ

Все методы принимают context.Context: QueryContext, ExecContext, BeginTx. При отмене контекста (таймаут, cancel) драйвер должен прервать запрос и освободить ресурсы. В HTTP handler передают r.Context(); при долгих операциях создают контекст с таймаутом. Важно не держать контекст запроса для фоновых задач - создавать свой контекст.

ctx, cancel := context.WithTimeout(r.Context(), 5*time.Second)
defer cancel()
row := db.QueryRowContext(ctx, "SELECT ...", id)
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.