Dans Go, le package contextuel permet de gérer les valeurs de requête, les signaux d'annulation et les délais.
Deux manières courantes de démarrer un contexte sont context.TODO() et context.Background().
Bien qu'ils se comportent de la même manière, ils servent des objectifs différents.
context.Background() est la valeur par défaut lorsque vous n'avez besoin d'aucune gestion particulière (comme l'annulation ou les délais).
Il est souvent utilisé dans main, init ou lors de l'initialisation d'opérations qui ne nécessitent pas de contexte plus spécifique.
func main() { ctx := context.Background() server := http.Server{Addr: ":8080", BaseContext: func(net.Listener) context.Context { return ctx }} log.Fatal(server.ListenAndServe()) }
Dans cet exemple, context.Background() est utilisé pour établir un contexte de base pour le serveur HTTP.
context.TODO() est un contexte d'espace réservé. Utilisez-le lorsque vous n'êtes pas sûr du contexte à fournir ou lorsque vous prévoyez de refactoriser plus tard.
func processOrder() { ctx := context.TODO() // Placeholder, decision on context pending err := db.SaveOrder(ctx, orderData) if err != nil { log.Println("Failed to save order:", err) } }
Ici, context.TODO() est temporairement utilisé pour une opération de base de données jusqu'à ce qu'un contexte plus spécifique soit défini.
Les deux fonctions renvoient un contexte vide, mais elles expriment des intentions différentes :
Quand utiliser context.Background() :
Quand utiliser context.TODO() :
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3