Sobes.tech
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:

  1. De nieuwe context (Context), die automatisch wordt geannuleerd na de ingestelde timeout.
  2. 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.