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
lenvž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.