Назад к вопросам
Middle+
4
Что такое срез (slice) в Go? Чем отличаются len и cap?
Компании, где спрашивали
А7
Ответ от нейросети
sobes.tech AI
Срез (slice) в Go — это динамический, изменяемый по размеру представление последовательности элементов одного типа, основанное на массиве. Срез содержит указатель на базовый массив, длину (len) и ёмкость (cap).
- len(slice) — количество элементов, доступных в срезе, то есть длина среза.
- cap(slice) — максимальное количество элементов, которые срез может вместить без выделения новой памяти, то есть размер базового массива от начала среза.
Пример:
arr := [5]int{1, 2, 3, 4, 5}
s := arr[1:3] // срез элементов с индексами 1 и 2
fmt.Println(len(s)) // 2
fmt.Println(cap(s)) // 4 (с 1-го индекса до конца массива)
Таким образом, len определяет текущую длину среза, а cap — сколько элементов можно добавить без перераспределения памяти.