Sobes.tech
Middle+

È possibile inserire una struttura nel contesto tramite context.WithValue?

sobes.tech AI

Risposta dell'AI

Sì, in Go puoi inserire una struttura nel contesto usando context.WithValue. Tuttavia, è importante ricordare che il contesto è destinato a trasmettere dati legati alla richiesta, come timeout, scadenze e metadati, e non per trasmettere strutture grandi o modificabili.

Esempio:

type User struct {
    ID   int
    Name string
}

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

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

Si consiglia di usare tipi di chiavi che non entrino in conflitto con altri pacchetti, ad esempio, tipi di chiavi propri, per evitare collisioni.