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