Sobes.tech
Назад к вопросам
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]
}

Таким образом, сортировка внутри функции изменит исходный массив, даже если слайс передан по значению, потому что копируется только структура слайса, а не данные массива.