Sobes.tech
Junior — Middle

Je možné situace, kdy proměnná len ukazuje menší délku, než je skutečná velikost pole nebo řezu?

sobes.tech AI

Odpověď od AI

V jazyce Go vždy proměnná len pro pole nebo řez odráží aktuční délku, kterou vrací vestavěná funkce len().

  • Pro pole je len vždy rovno velikosti pole a nemění se.
  • Pro řez ukazuje počet prvků v řezu, který může být menší nebo roven kapacitě řezu.

Situace, kdy je len menší než skutečná velikost pole, je nemožná, protože len pro pole je pevná a rovná velikosti.

Pro řez může být délka menší než kapacita, ale nesmí být větší než skutečný počet dostupných prvků podle indexu.

Příklad:

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

Zde je délka řezu 2, ačkoliv kapacita je 4. Ale délka nemůže být větší než skutečná velikost řezu.