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.
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.
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.
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.
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.
Ambas funciones devuelven un contexto vacío, pero expresan intenciones diferentes:
Cuándo usar contexto.Fondo():
Cuándo usar contexto.TODO():
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