Sobes.tech
Junior — Middle

Prečo funkcia Context.WithTimeout vracia dve hodnoty a ako sa používajú v kontexte správy časových limitov?

sobes.tech AI

Odpoveď od AI

Funkcia context.WithTimeout v jazyku Go vracia dve hodnoty:

  1. Nový kontext (Context), ktorý sa automaticky zruší po uplynutí stanoveného času.
  2. Funkciu na zrušenie (CancelFunc), ktorú možno zavolať na predčasné ukončenie práce s kontextom.

Použitie:

  • Nový kontext sa používa na kontrolu času vykonávania operácií: ak čas vyprší, kontext sa zruší a s ním spojené operácie dostanú signál zrušenia.
  • Funkcia na zrušenie sa volá na uvoľnenie zdrojov spojených s kontextom, ak operácia skončila skôr ako časový limit.

Príklad:

timedCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel() // zabezpečuje uvoľnenie zdrojov

select {
case <-doWork(timedCtx):
    fmt.Println("Práca dokončená")
case <-timedCtx.Done():
    fmt.Println("Vypršal čas alebo zrušené")
}

Týmto spôsobom umožňujú vrátané hodnoty stanoviť časové obmedzenie a riadiť zrušenie operácií.