Sobes.tech
Junior — Middle

¿Qué enfoques y prácticas recomendadas se utilizan al trabajar con el contexto y el método context.WithValue?

sobes.tech AI

Respuesta de la IA

Al trabajar con el contexto en Go y usando context.WithValue, es importante recordar las siguientes recomendaciones:

  • El contexto está destinado a transmitir señales de cancelación, límites de tiempo y información limitada relacionada con la solicitud.
  • Use context.WithValue solo para transmitir datos necesarios durante el ciclo de vida de la solicitud y que no son adecuados como parámetros explícitos de funciones.
  • Las claves para WithValue deben ser tipos únicos y no públicos para evitar conflictos. Normalmente, se crea un tipo de clave propio.
  • No almacene en el contexto objetos grandes o datos que puedan causar fugas de memoria.

Ejemplo de uso de una clave:

package main

import (
    "context"
    "fmt"
)

type ctxKey string

func main() {
    key := ctxKey("userID")
    ctx := context.WithValue(context.Background(), key, 42)

    userID := ctx.Value(key).(int)
    fmt.Println("ID de usuario desde el contexto:", userID)
}

De esta manera, el contexto sirve para transmitir metadatos y gestionar el ciclo de vida de las operaciones, no para almacenar el estado de la aplicación.