Senior
Was zeigt der Code mit Slices und deren Übergabe an eine Funktion? Wie funktioniert die Übergabe eines Slices an eine Funktion?
sobes.tech KI
Antwort von 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.
Таким образом, передача слайса позволяет изменять содержимое массива, но не саму структуру слайса (например, длину) вне функции.