Back to questions
Senior
1
Что выведет код со слайсами и передачей в функцию? Как работает передача слайса в функцию?
Companies where asked
Flant
Answer from AI
sobes.tech AI
В Go слайсы передаются в функции по значению, но при этом копируется только структура слайса (указатель на массив, длина, ёмкость), а не сам underlying массив. Это значит, что изменения элементов слайса внутри функции отражаются на оригинальном массиве.
Пример:
func modify(slice []int) {
slice[0] = 100
slice = append(slice, 200) // изменяет локальный слайс, оригинал не меняется
}
func main() {
s := []int{1, 2, 3}
modify(s)
fmt.Println(s) // Выведет: [100 2 3]
}
Объяснение:
slice[0] = 100меняет элемент в оригинальном массиве.appendможет создать новый массив, если ёмкость недостаточна, но это не влияет на исходный слайс вmain.
Таким образом, передача слайса позволяет изменять содержимое массива, но не саму структуру слайса (например, длину) вне функции.