В Go переменная len для массива или среза всегда отражает текущую длину, которую возвращает встроенная функция 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. Но длина не может быть больше фактического размера среза.