Sobes.tech
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 len vž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.