Как правильно использовать context в Go: от основ до продвинутых практик
Пакет context — один из самых важных инструментов в Go для управления отменой операций, таймаутами и передачей данных между горутинами. Однако многие разработчики используют его неправильно, что приводит к утечкам памяти или неочевидным багам. В этой статье разберём: context решает три ключевые задачи: func handler(w http.ResponseWriter, r *http.Request) {
ctx, cancel := context.WithTimeout(r.Context(), 2*time.Second)
defer cancel() // Освобождаем ресурсы
result, err := someLongOperation(ctx)
if err != nil {
http.Error(w, "Operation timed out", http.StatusGatewayTimeout)
return
}
fmt...