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.