Junior — Middle
Ako určiť, kto inicioval zrušenie aktuálneho kontextu?
sobes.tech AI
Odpoveď od AI
V Go nie je možné priamo určiť, kto inicioval zrušenie aktuálneho kontextu, pretože kontext neukladá informácie o iniciátorovi zrušenia.
Avšak, je možné:
- Použiť rôzne kontexty s rôznymi zdrojmi zrušenia (napríklad
context.WithCancel,context.WithTimeout,context.WithDeadline) na pochopenie dôvodu zrušenia podľa typu kontextu. - Prenášať dodatočné informácie cez kontext pomocou
context.WithValue, aby bolo možné identifikovať iniciátora.
Príklad kontroly dôvodu zrušenia:
select {
case <-ctx.Done():
err := ctx.Err()
if err == context.Canceled {
fmt.Println("Ručné zrušenie")
} else if err == context.DeadlineExceeded {
fmt.Println("Vypršal čas")
}
}
Pre presné určenie iniciátora zrušenia je potrebné implementovať vlastný mechanizmus prenosu týchto informácií.