"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Go Context — TODO() vs Background() Plus de confusion !

Go Context — TODO() vs Background() Plus de confusion !

Publié le 2024-11-06
Parcourir:409

Go Context — TODO() vs Background() No more confusing!

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.

contexte.Background()

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.

Exemple:

 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.

contexte.TODO()

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.

Exemple:

 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.

Différences clés

Les deux fonctions renvoient un contexte vide, mais elles expriment des intentions différentes :

  • context.Background() : utilisé lorsque vous êtes sûr qu'aucune fonctionnalité contextuelle spéciale n'est nécessaire.
  • context.TODO() : un contexte d'espace réservé temporaire, signalant les changements futurs.

Conclusion

Quand utiliser context.Background() :

  • Lors de l'initialisation de services de base tels que des serveurs HTTP ou des connexions à une base de données.
  • Lorsqu'il n'y a pas besoin d'annulation, de délais ou de valeurs.

Quand utiliser context.TODO() :

  • Lors de la refactorisation, et vous n'avez pas encore décidé du contexte.
  • Lors de la mise en œuvre d'un code à un stade précoce qui nécessite des améliorations futures.
Déclaration de sortie Cet article est reproduit sur : https://dev.to/zakariachahboun/are-you-confused-about-contexttodo-vs-contextbackground-heres-what-you-need-to-know-2h46?1 En cas de violation , veuillez contacter study_golang @163.comdelete
Dernier tutoriel Plus>

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