Junior — Middle
Quali approcci e pratiche raccomandate vengono utilizzate quando si lavora con il contesto e il metodo context.WithValue?
sobes.tech AI
Risposta dell'AI
Quando si lavora con il contesto in Go e si utilizza context.WithValue, è importante ricordare le seguenti raccomandazioni:
- Il contesto è destinato a trasmettere segnali di cancellazione, limiti di tempo e informazioni limitate relative alla richiesta.
- Usa
context.WithValuesolo per trasmettere dati necessari durante il ciclo di vita della richiesta e che non sono adatti come parametri espliciti di funzione. - Le chiavi per
WithValuedevono essere tipi unici e non pubblici per evitare conflitti. Di solito, si crea un tipo di chiave personalizzato. - Non memorizzare nel contesto oggetti grandi o dati che potrebbero causare perdite di memoria.
Esempio di utilizzo di una chiave:
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 utente dal contesto:", userID)
}
In questo modo, il contesto serve per trasmettere metadati e gestire il ciclo di vita delle operazioni, non per memorizzare lo stato dell'applicazione.