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