Назад к вопросам
VK
Middle
4
Что происходит при передаче слайса в функцию и изменении его элементов?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Go слайс — это структура, которая содержит указатель на массив, длину и ёмкость. При передаче слайса в функцию копируется именно эта структура (указатель, длина, ёмкость), а не сам массив.
Это значит, что внутри функции слайс указывает на тот же базовый массив, что и снаружи. Поэтому изменение элементов слайса внутри функции изменит элементы исходного массива.
Пример:
func modify(slice []int) {
slice[0] = 100
}
func main() {
s := []int{1, 2, 3}
modify(s)
fmt.Println(s) // Выведет [100 2 3]
}
Однако если внутри функции изменить сам слайс (например, сделать slice = append(slice, 4)), то это не повлияет на слайс снаружи, так как копируется структура слайса, а не ссылка на неё.