Назад к вопросам
Junior — Middle
76
Какие изменения произойдут с слайсом внутри функции, если его передать по значению, а функция занимается сортировкой и не возвращает результат?
Ответ от нейросети
sobes.tech AI
В Go слайсы передаются в функции по значению, но важно понимать, что значение слайса — это структура, содержащая указатель на массив, длину и емкость. При передаче слайса по значению копируется именно эта структура, а не сам массив данных.
Если функция сортирует слайс, переданный по значению, и не возвращает результат, то изменения будут видны и снаружи, потому что указатель внутри слайса указывает на тот же массив данных.
Пример:
func sortSlice(s []int) {
sort.Ints(s) // сортируем слайс
}
func main() {
nums := []int{3, 1, 2}
sortSlice(nums)
fmt.Println(nums) // Выведет: [1 2 3]
}
Таким образом, сортировка внутри функции изменит исходный массив, даже если слайс передан по значению, потому что копируется только структура слайса, а не данные массива.