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.WithValuesolo 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
WithValuedeben 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.