Назад к задачам
Junior — Senior
4

Влияние функции на переданный слайс

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Имеется слайс, созданный с начальной ёмкостью 2. После того как в него добавлен один элемент 1, вызывается функция add() с параметром 2. Вопрос: отразятся ли изменения внутри функции на исходном слайсе.

arr := make([]int, 0, 2)     // len 0 cap 2 [ , ]
arr = append(arr, 1)         // len = 1 , cap = 2 [1, ]
add(arr, 2)                  // len = 1 , cap = 2 [1, ] → функция не меняет исходный слайс

func add(arr []int, elem int) {
 arr = append(arr, elem)  // [1, 2] но это копия
}

В примере показано, что внутри функции создаётся новая копия заголовка слайса, поэтому исходный массив остаётся без изменений.