Sobes.tech
Senior

Go-da kontekst (context) nədir və niyə lazımdır?

sobes.tech Süni İntellekt

AI-dan cavab

Go'da context — bu paket və tipdir, o, goroutine'lar arasında ləğv siqnalları, vaxt limitləri və digər əhəmiyyətli məlumatların ötürülməsi üçün istifadə olunur.

context-in əsas vəzifələri:

  • Vaxt limiti və ya istifadəçi tərəfindən ləğv olunduqda əməliyyatları ləğv etməyə imkan verir (məsələn, verilənlər bazası və ya HTTP sorğuları).
  • Əməliyyatlar üçün vaxt limitlərini (deadlines) ötürür.
  • Funksiyalar arasında dəyərləri (məsələn, sorğu identifikatorları) ötürməyə imkan verir.

İstifadə nümunəsi:

ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
defer cancel()

select {
case result := <-doWork(ctx):
    fmt.Println("Nəticə:", result)
case <-ctx.Done():
    fmt.Println("Əməliyyat ləğv olundu və ya vaxt bitdi")
}

Burada, ctx doWork funksiyasına ötürülür və o, kontekst ləğv edilərsə və ya vaxt bitərsə, işini dayandıra bilər. Bu, əməliyyatların və resursların ömrünü idarə etməyə kömək edir.