Sobes.tech
Middle+

É possível colocar uma estrutura no contexto através de context.WithValue?

sobes.tech IA

Resposta da IA

Sim, no Go pode colocar uma estrutura no contexto usando context.WithValue. No entanto, deve lembrar-se de que o contexto destina-se a transmitir dados relacionados com a solicitação, como tempos limite, limites de tempo e metadados, e não para transmitir estruturas grandes ou modificáveis.

Exemplo:

type User struct {
    ID   int
    Name string
}

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

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

Recomenda-se usar tipos de chaves que não entrem em conflito com outros pacotes, por exemplo, tipos de chaves próprios, para evitar colisões.