Sobes.tech
Junior — Middle

Comment distinguer l'utilisation de Context.TODO de Context.Background dans le code, et dans quels cas ces fonctions sont-elles utilisées?

sobes.tech IA

Réponse de l'IA

En Go, context.Background() et context.TODO() renvoient un contexte, mais sont utilisés dans différentes situations:

  • context.Background() — c'est le contexte de base, vide, généralement utilisé comme contexte racine dans les fonctions principales, les tests ou lors de l'initialisation. Cela signifie que le contexte n'est pas annulé et ne contient pas de valeurs.

  • context.TODO() — est utilisé comme un espace réservé dans les endroits du code où le contexte n'est pas encore défini ou où il n'a pas été décidé quel contexte utiliser. C'est un signal pour les développeurs qu'ils doivent y réfléchir plus tard et le remplacer par un contexte approprié.

Exemple:

func main() {
    ctx := context.Background() // contexte racine
    process(ctx)
}

func process(ctx context.Context) {
    // si nous ne savons pas encore quel contexte transmettre
    childCtx := context.TODO()
    doSomething(childCtx)
}

En résumé:

  • Utilisez Background() comme contexte racine.
  • Utilisez TODO() comme un espace réservé temporaire lorsque le contexte n'est pas encore défini.