Sobes.tech
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.