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.
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.
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.
context.TODO() é um contexto de espaço reservado. Use-o quando não tiver certeza de qual contexto fornecer ou quando planejar refatorar posteriormente.
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.
Ambas as funções retornam um contexto vazio, mas expressam intenções diferentes:
Quando usar context.Background():
Quando usar context.TODO():
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