Maison > développement back-end > Golang > le corps du texte

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

PHPz
Libérer: 2024-09-10 06:33:32
original
713 Les gens l'ont consulté

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

Dans Go, le package contextuel permet de gérer les valeurs liées aux requêtes, 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())
 }
Copier après la connexion

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)
     }
 }
Copier après la connexion

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 des services de base tels que les serveurs HTTP ou les connexions à une base de données.
  • Quand il n'y a pas besoin d'annulation, de délais ou de valeurs.

Quand utiliser context.TODO() :

  • Lors du refactoring, 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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!