Ответ
Слайс в Go — это структура данных, состоящая из трех полей:
- Указатель на массив (ptr) — хранит адрес первого элемента массива
- Длина (len) — текущее количество элементов
- Емкость (cap) — максимальное количество элементов без переаллокации
type slice struct {
ptr *[]T
len int
cap int
}
Пример создания и модификации:
arr := [5]int{1,2,3,4,5}
s := arr[1:4] // len=3, cap=4 (от 1 до конца массива)
s = append(s, 6) // изменяет arr[4], len=4
При добавлении элементов сверх capacity создается новый массив (обычно с удвоенной capacity) и копируются данные. Исходный массив остается неизменным, если на него больше нет ссылок.