Sobes.tech
Назад к вопросам
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)
}

Рекомендуется использовать для ключей типы, не конфликтующие с другими пакетами, например, собственные типы ключей, чтобы избежать коллизий.