Sobes.tech
Back to questions
Junior — Middle
76

Как различаются понятия длины и емкости среза в языке программирования?

Companies where asked
WildberriesWildberries

Answer from AI

sobes.tech AI

В языке Go срез (slice) имеет два важных параметра: длину (len) и емкость (cap).

  • Длина (len) — количество элементов, которые срез в данный момент содержит и к которым можно обращаться.
  • Емкость (cap) — максимальное количество элементов, которые срез может вместить без выделения новой памяти.

Например:

arr := [5]int{1, 2, 3, 4, 5}
s := arr[1:3] // срез содержит элементы 2 и 3
fmt.Println(len(s)) // 2
fmt.Println(cap(s)) // 4, т.к. срез начинается с arr[1], и оттуда до конца массива 4 элемента

Емкость важна для понимания, когда при добавлении элементов в срез произойдет перераспределение памяти.