Sobes.tech
Назад к вопросам
Middle+
3

Можно ли взять указатель на элемент мапа?

Компании, где спрашивали
МТСМТС

Ответ от нейросети

sobes.tech AI

В Go нельзя взять указатель на элемент мапы напрямую, потому что элементы мапы не имеют стабильного адреса в памяти — они могут перемещаться при изменениях мапы. Если нужно работать с элементом по указателю, обычно используют один из подходов:

  • Хранить в мапе указатели на значения, тогда можно получить указатель из мапы напрямую.
  • Скопировать значение из мапы в отдельную переменную и взять указатель на неё.

Пример с указателями в мапе:

m := map[string]*int{}
val := 42
m["key"] = &val
fmt.Println(*m["key"]) // 42

Пример с копированием значения:

m := map[string]int{"key": 42}
val := m["key"]
ptr := &val
fmt.Println(*ptr) // 42

Но изменение через ptr не повлияет на значение в мапе.