Junior — Middle
Опишете ситуация, в която използването на контексти би било оправдано и ефективно.
sobes.tech AI
Отговор от AI
В Go контекстите (context.Context) се използват за управление на времето на живот на операциите, особено при асинхронни или мрежови извиквания. Например, ако имате HTTP сървър, който обработва заявки, и искате да отмените обработката, ако клиентът прекъсне връзката или ако времето за изчакване изтече, използването на контекста ще бъде подходящо.
Пример:
func handler(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
select {
case <-time.After(5 * time.Second):
fmt.Fprintln(w, "Обработката е завършена")
case <-ctx.Done():
err := ctx.Err()
fmt.Println("Заявката е отменена или изтече времето:", err)
}
}
Тук контекстът позволява да се отменя дълга операция, ако клиентът се изключи или изтече времето, което спестява ресурси и подобрява отзивчивостта на приложението.