Middle+
Czy można umieścić strukturę w kontekście za pomocą context.WithValue?
sobes.tech AI
Odpowiedź od AI
Tak, w Go można umieścić strukturę w kontekście za pomocą context.WithValue. Należy jednak pamiętać, że kontekst jest przeznaczony do przekazywania danych związanych z żądaniem, takich jak limity czasowe, metadane i czasami, a nie do przekazywania dużych lub zmiennych struktur.
Przykład:
type User struct {
ID int
Name string
}
ctx := context.Background()
user := &User{ID: 1, Name: "Alice"}
ctx = context.WithValue(ctx, "user", user)
// Pobieranie
u, ok := ctx.Value("user").(*User)
if ok {
fmt.Println(u.Name)
}
Zaleca się używanie typów kluczy, które nie kolidują z innymi pakietami, na przykład własnych typów kluczy, aby uniknąć kolizji.