Junior — Middle
Je možná situácia, keď premenná len ukazuje menšiu dĺžku, ako je skutočná veľkosť poľa alebo výrezu?
sobes.tech AI
Odpoveď od AI
V jazyku Go vždy premenná len pre poľa alebo úseku odráža aktuálnu dĺžku, ktorú vracia vstavaná funkcia len().
- Pre pole je
lenvždy rovné veľkosti poľa a nemení sa. - Pre úsek ukazuje počet prvkov v úseku, ktorý môže byť menší alebo rovný kapacite úseku.
Situácia, keď je len menší ako skutočná veľkosť poľa, je nemožná, pretože len pre pole je pevná a rovná veľkosti.
Pre úsek môže byť dĺžka menšia ako kapacita, ale nemôže byť väčšia ako skutočný počet dostupných prvkov podľa indexu.
Prí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
Tu je dĺžka úseku 2, hoci kapacita je 4. Ale dĺžka nemôže byť väčšia ako skutočná veľkosť úseku.