Sobes.tech
Middle+

Lehet-e szerkezetet a kontextusba helyezni a context.WithValue segítségével?

sobes.tech MI

Válasz az MI-től

Igen, Go-ban elhelyezhetsz egy struktúrát a kontextusban a context.WithValue segítségével. Fontos azonban megjegyezni, hogy a kontextus arra szolgál, hogy az adatok átadását a kéréshez kapcsolódóan végezze, például időkorlátokat, határidőket és metaadatokat, nem pedig nagy vagy módosítható struktúrák átadására.

Példa:

type User struct {
    ID   int
    Name string
}

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

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

Ajánlott olyan kulcstípusokat használni, amelyek nem ütköznek más csomagokkal, például saját kulcstípusokat, hogy elkerüljük az ütközéseket.