"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Go Context — TODO() vs Background() Chega de confusão!

Go Context — TODO() vs Background() Chega de confusão!

Publicado em 2024-11-06
Navegar:883

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

No Go, o pacote de contexto ajuda a gerenciar valores no escopo da solicitação, sinais de cancelamento e prazos.
Duas maneiras comuns de iniciar um contexto são context.TODO() e context.Background().
Embora se comportem de maneira semelhante, eles servem a propósitos diferentes.

contexto.Background()

context.Background() é o padrão quando você não precisa de nenhum tratamento especial (como cancelamento ou prazos).
É frequentemente usado em main, init ou ao inicializar operações que não precisam de um contexto mais específico.

Exemplo:

 func main() {
     ctx := context.Background()
     server := http.Server{Addr: ":8080", BaseContext: func(net.Listener) context.Context {
         return ctx
     }}
     log.Fatal(server.ListenAndServe())
 }

Neste exemplo, context.Background() é usado para estabelecer um contexto base para o servidor HTTP.

contexto.TODO()

context.TODO() é um contexto de espaço reservado. Use-o quando não tiver certeza de qual contexto fornecer ou quando planejar refatorar posteriormente.

Exemplo:

 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)
     }
 }

Aqui, context.TODO() é usado temporariamente para uma operação de banco de dados até que um contexto mais específico seja definido.

Principais diferenças

Ambas as funções retornam um contexto vazio, mas expressam intenções diferentes:

  • context.Background(): Usado quando você tem certeza de que nenhum recurso de contexto especial é necessário.
  • context.TODO(): Um contexto de espaço reservado temporário, sinalizando mudanças futuras.

Conclusão

Quando usar context.Background():

  • Ao inicializar serviços principais, como servidores HTTP ou conexões de banco de dados.
  • Quando não há necessidade de cancelamento, prazos ou valores.

Quando usar context.TODO():

  • Ao refatorar, e você ainda não decidiu o contexto.
  • Ao implementar código em estágio inicial que requer melhorias futuras.
Declaração de lançamento Este artigo é reproduzido em: https://dev.to/zakariachahboun/are-you-confused-about-contexttodo-vs-contextbackground-heres-what-you-need-to-know-2H46?1 Se houver alguma violação Para crimes, entre em contato com Study_Golang @163.com Excluir
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3