Sobes.tech
Junior — Middle

Ar įmanoma situacija, kai kintamasis len rodo mažesnį ilgį nei faktinis masyvo ar iškarpos dydis?

sobes.tech AI

Atsakymas iš AI

Go kalboje, kintamasis len masyvui ar gabalui visada atspindi dabartinį ilgį, kurį grąžina įmontinta funkcija len().

  • Masyvui, len visada yra lygus masyvo dydžiui ir nekeičiasi.
  • Gabalui, len rodo elementų skaičių gabale, kuris gali būti mažesnis arba lygus gabalo talpai.

Situacija, kai len yra mažesnis už faktinį masyvo dydį, yra neįmanoma, nes len masyvui yra fiksuotas ir lygus dydžiui.

Gabalui, ilgis gali būti mažesnis už talpą, bet negali būti didesnis už faktinį prieinamų elementų skaičių pagal indeksą.

Pavyzdys:

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

Čia, gabalo ilgis yra 2, nors talpa yra 4. Bet ilgis negali būti didesnis už faktinį gabalo dydį.