Sobes.tech
Middle+

¿Se puede poner una estructura en el contexto a través de context.WithValue?

sobes.tech AI

Respuesta de la IA

Sí, en Go puedes colocar una estructura en el contexto usando context.WithValue. Sin embargo, debes recordar que el contexto está destinado a transmitir datos relacionados con la solicitud, como tiempos de espera, límites de tiempo y metadatos, y no para transmitir estructuras grandes o modificables.

Ejemplo:

type User struct {
    ID   int
    Name string
}

ctx := context.Background()
user := &User{ID: 1, Name: "Alice"}
ctx = context.WithValue(ctx, "user", user)

// Extracción
u, ok := ctx.Value("user").(*User)
if ok {
    fmt.Println(u.Name)
}

Se recomienda usar tipos de claves que no entren en conflicto con otros paquetes, por ejemplo, tipos de claves propios, para evitar colisiones.