Назад к вопросам
МТС
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 не повлияет на значение в мапе.