Назад к вопросам
Middle+
5
Можно ли класть структуру в контекст через context.WithValue?
Компании, где спрашивали
WaterWal
Ответ от нейросети
sobes.tech AI
Да, в Go можно положить структуру в контекст с помощью context.WithValue. Однако стоит помнить, что контекст предназначен для передачи данных, связанных с запросом, таких как тайм-ауты, дедлайны и метаданные, а не для передачи больших или изменяемых структур.
Пример:
type User struct {
ID int
Name string
}
ctx := context.Background()
user := &User{ID: 1, Name: "Alice"}
ctx = context.WithValue(ctx, "user", user)
// Извлечение
u, ok := ctx.Value("user").(*User)
if ok {
fmt.Println(u.Name)
}
Рекомендуется использовать для ключей типы, не конфликтующие с другими пакетами, например, собственные типы ключей, чтобы избежать коллизий.