Junior — Middle
Waarom geeft de functie Context.WithTimeout twee waarden terug en hoe worden ze gebruikt in de context van time-outs?
sobes.tech AI
Antwoord van AI
De functie context.WithTimeout in Go geeft twee waarden terug:
- De nieuwe context (
Context), die automatisch wordt geannuleerd na de ingestelde timeout. - De annuleringsfunctie (
CancelFunc), die kan worden aangeroepen om het werk met de context voortijdig te beëindigen.
Gebruik:
- De nieuwe context wordt gebruikt om de uitvoeringstijd van operaties te controleren: als de tijd om is, wordt de context geannuleerd en ontvangen de gerelateerde operaties een annuleringssignaal.
- De annuleringsfunctie wordt aangeroepen om resources die aan de context zijn gekoppeld vrij te maken, als de operatie eerder dan de timeout is voltooid.
Voorbeeld:
timedCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel() // garandeert het vrijmaken van resources
select {
case <-doWork(timedCtx):
fmt.Println("Werk voltooid")
case <-timedCtx.Done():
fmt.Println("Timeout of annulering")
}
Op deze manier maken de geretourneerde waarden het mogelijk om een tijdslimiet te stellen en de annulering van operaties te controleren.