Valores en el contexto en Go
Un contexto puede llevar valores de la petición, con claves de un tipo no exportado.
type contextKey struct{ name string }
var requestIDKey = contextKey{"requestID"}
func withRequestID(ctx context.Context, id string) context.Context {
return context.WithValue(ctx, requestIDKey, id)
}
func requestID(ctx context.Context) (string, bool) {
id, ok := ctx.Value(requestIDKey).(string)
return id, ok
}
func demo() (string, bool) {
ctx := withRequestID(context.Background(), "abc123")
return requestID(ctx)
}
Cómo funciona
- Un tipo de clave privado evita que dos paquetes choquen.
- Los valores son para metadatos de la petición, no para pasar argumentos.
- La búsqueda devuelve any, así que requiere una aserción de tipo.
Palabras clave y builtins usados aquí
boolfuncreturnstringstructtypevar
El intento, en números
- Líneas
- 17
- Caracteres a escribir
- 421
- Tokens
- 102
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 58 segundos.
Paso 3 de 3 en Context; paso 13 de 25 en Concurrencia.