Sobes.tech
Senior

Prečo ne použiť vždy polia namiesto rezov?

sobes.tech AI

Odpoveď od AI

Poľa v Go majú pevne stanovenú veľkosť, ktorá sa určuje pri deklarácii, a táto veľkosť je súčasťou typu. To znamená, že polia nie sú flexibilné a nemôžu dynamicky meniť dĺžku.

Rezy (slices) sú oveľa pohodlnejší a flexibilnejší typ, ktorý predstavuje dynamický pohľad na pole. Obsahujú ukazovateľ na pole, dĺžku a kapacitu, čo umožňuje meniť veľkosť rezu, pridávať prvky (pomocou append) a prenášať rezy ako univerzálnejšie štruktúry.

Prečo nepoužívať vždy polia:

  • Polia majú pevne stanovenú veľkosť, čo je nepraktické pre dynamické dáta.
  • Prenos poľa do funkcie kopíruje celé pole, čo je nákladné na pamäť a čas.
  • Rezy sa prenášajú odkazom na pole, čo je efektívnejšie.

Príklad:

var arr [3]int = [3]int{1, 2, 3} // pevná veľkosť
var s []int = arr[:2]            // rez časti poľa
s = append(s, 4)                 // rez môže byť rozšírený (ak je kapacita)

Preto sú rezy univerzálnejším a pohodlnejším nástrojom na prácu s sekvenciami dát v Go.