Sobes.tech
Middle+

Este posibil să pui o structură în context prin intermediul context.WithValue?

sobes.tech AI

Răspuns de la AI

Da, în Go poți plasa o structură în context folosind context.WithValue. Cu toate acestea, trebuie să reții că contextul este destinat pentru transmiterea datelor legate de solicitare, cum ar fi timeout-uri, termene limită și metadate, și nu pentru transmiterea structurilor mari sau modificabile.

Exemplu:

type User struct {
    ID   int
    Name string
}

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

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

Se recomandă utilizarea tipurilor de chei care nu intră în conflict cu alte pachete, de exemplu, tipuri de chei proprii, pentru a evita coliziunile.