Назад к вопросам
Junior — Middle
77
Какие данные внутри слайса передаются при вызове функции с этим слайсом в качестве аргумента?
Ответ от нейросети
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]
}
Таким образом, при передаче слайса в функцию копируются только три поля структуры слайса, а данные массива остаются общими.