typestar

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

  1. Un tipo de clave privado evita que dos paquetes choquen.
  2. Los valores son para metadatos de la petición, no para pasar argumentos.
  3. La búsqueda devuelve any, así que requiere una aserción de tipo.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 3 en Context; paso 13 de 25 en Concurrencia.

← Anterior Siguiente →