Назад к вопросам
Senior
5
Передаётся ли map по ссылке в функцию в Go?
Компании, где спрашивали
Uzum
Ответ от нейросети
sobes.tech AI
В Go map передаётся в функцию по значению, но важно понимать, что значение — это указатель на внутреннюю структуру данных map. Это значит, что при передаче map в функцию копируется не вся структура, а лишь указатель на неё.
В результате внутри функции можно изменять содержимое map (добавлять, удалять, изменять элементы), и эти изменения будут видны снаружи. Однако если внутри функции присвоить map новую карту, это не повлияет на исходный map.
Пример:
func modifyMap(m map[string]int) {
m["key"] = 42 // изменит исходный map
m = make(map[string]int) // присвоение новой карты не повлияет на внешний map
m["newKey"] = 100
}
func main() {
myMap := map[string]int{"original": 1}
modifyMap(myMap)
fmt.Println(myMap) // Выведет: map[original:1 key:42]
}