Sobes.tech
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)
    }
}

Тук контекстът позволява да се отменя дълга операция, ако клиентът се изключи или изтече времето, което спестява ресурси и подобрява отзивчивостта на приложението.