Junior — Middle
Quelles approches et pratiques recommandées sont utilisées lors du travail avec le contexte et la méthode context.WithValue?
sobes.tech IA
Réponse de l'IA
Lors de la manipulation du contexte en Go et en utilisant context.WithValue, il est important de se rappeler les recommandations suivantes:
- Le contexte est destiné à transmettre des signaux d'annulation, des délais et des informations limitées liées à la requête.
- Utilisez
context.WithValueuniquement pour transmettre des données nécessaires tout au long du cycle de vie de la requête et qui ne conviennent pas comme paramètres explicites de fonction. - Les clés pour
WithValuedoivent être des types uniques et non publics pour éviter les conflits. En général, on crée un type de clé personnalisé. - Ne stockez pas dans le contexte des objets volumineux ou des données pouvant entraîner des fuites de mémoire.
Exemple d'utilisation d'une clé:
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("ID utilisateur depuis le contexte:", userID)
}
Ainsi, le contexte sert à transmettre des métadonnées et à gérer le cycle de vie des opérations, et non à stocker l'état de l'application.