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.