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