Sobes.tech
Junior — Middle

Como distinguir o uso de Context.TODO de Context.Background no código, e em que casos essas funções são aplicadas?

sobes.tech IA

Resposta da IA

No Go, context.Background() e context.TODO() retornam um contexto, mas são usados em situações diferentes:

  • context.Background() — é o contexto base, vazio, que geralmente é usado como contexto raiz em funções principais, testes ou durante a inicialização. Significa que o contexto não é cancelado e não contém valores.

  • context.TODO() — é usado como um marcador de posição nos locais do código onde o contexto ainda não está definido ou não foi decidido qual contexto usar. É um sinal para os desenvolvedores de que eles devem pensar mais tarde e substituí-lo por um contexto adequado.

Exemplo:

func main() {
    ctx := context.Background() // contexto raiz
    process(ctx)
}

func process(ctx context.Context) {
    // se ainda não sabemos qual contexto passar adiante
    childCtx := context.TODO()
    doSomething(childCtx)
}

Resumindo:

  • Use Background() como contexto raiz.
  • Use TODO() como um marcador temporário quando o contexto ainda não estiver definido.