Sobes.tech
Senior

Waarvoor wordt context gebruikt? Hoe heb je het in de praktijk gebruikt?

sobes.tech AI

Antwoord van AI

In Go wordt context gebruikt om cancelatiesignalen, tijdslimieten en andere waarden tussen goroutines over te dragen, vooral bij het werken met verzoeken, time-outs en het annuleren van operaties.

Praktische toepassing:

  • Annuleren van lange operaties bij het sluiten van een HTTP-verzoek.
  • Overdragen van een tijdslimiet zodat een operatie niet langer duurt dan de ingestelde tijd.
  • Overdragen van metadata (bijvoorbeeld verzoek-ID's) door de keten van oproepen.

Voorbeeld van gebruik:

func handler(ctx context.Context) {
    select {
    case <-time.After(5 * time.Second):
        fmt.Println("Operatie voltooid")
    case <-ctx.Done():
        fmt.Println("Operatie geannuleerd")
    }
}

func main() {
    ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()
    handler(ctx)
}

Hier wordt de operatie na 2 seconden afgebroken, zelfs als deze gepland is voor 5.