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