Sobes.tech
Junior — Middle

Възможна ли е ситуация, при която променливата len показва по-малка дължина, отколкото е реалният размер на масива или среза?

sobes.tech AI

Отговор от 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. Но дължината не може да бъде по-голяма от реалния размер на среза.