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)
    }
}

აქ, კონტექსტი საშუალებას აძლევს გაუქმდეს ხანგრძლივი ოპერაცია, თუ მომხმარებელმა გამორთო კავშირი ან დროის ზღვარი გავიდა, რაც რესურსებს იცავს და აუმჯობესებს პროგრამის რეაგირების შესაძლებლობას.