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