Senior
Waarvoor dient de context in Go?
sobes.tech AI
Antwoord van AI
In Go wordt het pakket context gebruikt om de levensduur van verzoeken en operaties te beheren, vooral in gedistribueerde systemen en bij het werken met goroutines. Het stelt je in staat om cancel-signalen, tijdslimieten en waarden tussen functies en goroutines door te geven.
De belangrijkste taken van context:
- Het annuleren van operaties (bijvoorbeeld bij timeout of annulering door de gebruiker).
- Het doorgeven van tijdslimieten (het moment waarop de operatie moet eindigen).
- Het doorgeven van doorlopende waarden (bijvoorbeeld verzoek-ID's, authenticatietokens).
Voorbeeld van gebruik:
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
// Annuleer na 5 seconden bij timeout
go func(ctx context.Context) {
select {
case <-time.After(time.Second * 10):
fmt.Println("Operatie voltooid")
case <-ctx.Done():
fmt.Println("Operatie geannuleerd of timeout")
}
}(ctx)
// Aan het einde roepen we altijd cancel() aan om resources vrij te maken
cancel()
Op deze manier helpt context om de levenscyclus van operaties te controleren en het werk van goroutines te coördineren.