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:
- Nový kontext (
Context), ktorý sa automaticky zruší po uplynutí stanoveného času. - 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í.