Junior — Middle
Welke aanbevolen benaderingen en praktijken worden gebruikt bij het werken met de context en de methode context.WithValue?
sobes.tech AI
Antwoord van AI
Bij het werken met de context in Go en het gebruik van context.WithValue is het belangrijk om de volgende aanbevelingen te onthouden:
- De context is bedoeld om signalen voor annulering, tijdslimieten en beperkte informatie gerelateerd aan het verzoek over te dragen.
- Gebruik
context.WithValuealleen om gegevens over te dragen die nodig zijn gedurende de levenscyclus van het verzoek en die niet geschikt zijn als expliciete functieparameters. - Sleutels voor
WithValuemoeten unieke en niet-openbare typen zijn om conflicten te voorkomen. Meestal wordt een eigen sleuteltype gemaakt. - Bewaar geen grote objecten of gegevens die geheugenlekken kunnen veroorzaken in de context.
Voorbeeld van het gebruik van een sleutel:
package main
import (
"context"
"fmt"
)
type ctxKey string
func main() {
key := ctxKey("userID")
ctx := context.WithValue(context.Background(), key, 42)
userID := ctx.Value(key).(int)
fmt.Println("Gebruikers-ID uit context:", userID)
}
Op deze manier wordt de context gebruikt om metadata over te dragen en de levenscyclus van operaties te beheren, niet om de status van de applicatie op te slaan.