"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Ir al contexto: TODO() frente a Background() ¡No más confusión!

Ir al contexto: TODO() frente a Background() ¡No más confusión!

Publicado el 2024-11-06
Navegar:674

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

En Go, el paquete contextual ayuda a administrar los valores del alcance de la solicitud, las señales de cancelación y los plazos.
Dos formas comunes de iniciar un contexto son context.TODO() y context.Background().
Aunque se comportan de manera similar, tienen propósitos diferentes.

contexto.Fondo()

context.Background() es el valor predeterminado cuando no necesitas ningún manejo especial (como cancelación o fechas límite).
A menudo se usa en main, init o al inicializar operaciones que no necesitan un contexto más específico.

Ejemplo:

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

En este ejemplo, context.Background() se utiliza para establecer un contexto base para el servidor HTTP.

contexto.TODO()

context.TODO() es un contexto de marcador de posición. Úselo cuando no esté seguro de qué contexto proporcionar o cuando planee refactorizar más adelante.

Ejemplo:

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

Aquí, context.TODO() se usa temporalmente para una operación de base de datos hasta que se defina un contexto más específico.

Diferencias clave

Ambas funciones devuelven un contexto vacío, pero expresan intenciones diferentes:

  • context.Background(): se usa cuando estás seguro de que no se necesitan funciones de contexto especiales.
  • context.TODO(): un contexto de marcador de posición temporal, que indica cambios futuros.

Conclusión

Cuándo usar contexto.Fondo():

  • Al inicializar servicios principales como servidores HTTP o conexiones de bases de datos.
  • Cuando no hay necesidad de cancelación, plazos ni valores.

Cuándo usar contexto.TODO():

  • Al refactorizar, y aún no has decidido el contexto.
  • Al implementar código en etapa inicial que requiere mejoras futuras.
Declaración de liberación Este artículo se reproduce en: https://dev.to/zakariachahboun/are-you-confused-about-contexttodo-vs-contextbackground-heres-what-you-need-to-know-2h46?1 Si hay alguna infracción , comuníquese con Study_golang @ 163.com eliminar
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3