Sobes.tech
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.WithValue uniquement 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 WithValue doivent ê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.