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

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

В 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. Но длина не может быть больше фактического размера среза.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее