Sobes.tech
Назад к вопросам
Junior — Middle
77

Возможна ли ситуация, при которой переменная len показывает меньшую длину, чем фактический размер массива или среза?

Ответ от нейросети

sobes.tech AI

В Go переменная len для массива или среза всегда отражает текущую длину, которую возвращает встроенная функция len().

  • Для массива len всегда равна размеру массива и не меняется.
  • Для среза len показывает количество элементов в срезе, которое может быть меньше или равно емкости среза.

Ситуация, когда len меньше фактического размера массива невозможна, так как len для массива фиксирована и равна размеру.

Для среза длина может быть меньше емкости, но не больше реального количества элементов, доступных по индексу.

Пример:

arr := [5]int{1,2,3,4,5}
fmt.Println(len(arr)) // 5

slice := arr[1:3]
fmt.Println(len(slice)) // 2
fmt.Println(cap(slice)) // 4

Здесь длина среза 2, хотя емкость 4. Но длина не может быть больше фактического размера среза.