Ответ
При передаче слайса в функцию копируется только его заголовок (структура с указателем на массив, длиной и ёмкостью). Сам массив данных не копируется. Это значит, что изменения элементов слайса внутри функции будут видны снаружи, но изменение длины или ёмкости (например, через append) не повлияет на оригинальный слайс.
Пример:
func modifySlice(s []int) {
s[0] = 100 // изменит оригинальный массив
s = append(s, 200) // не повлияет на оригинальный слайс
}
func main() {
s := []int{1, 2, 3}
modifySlice(s)
fmt.Println(s) // [100, 2, 3]
}