Junior — Middle
Aké dôsledky vznikajú pri použití metódy append pre slice, ktorý je deklarovaný bez počiatočných parametrov?
sobes.tech AI
Odpoveď od AI
Ak je slice v Go deklarovaný bez počiatočných parametrov, napríklad var s []int, je zpočiatku rovný nil a neukazuje na pridelený poľ. Pri použití funkcie append Go automaticky pridelení nový poľ a pridá prvky, vracajúc nový slice s potrebnou kapacitou.
To znamená, že append bezpečne pracuje s nil-slice-ami, a môžete písať:
var s []int // nil-slice
s = append(s, 1, 2, 3) // teraz s ukazuje na nový poľ s prvkami
Dôsledky:
- Nie je potrebné inicializovať slice pred použitím
append. - Pri prvom volaní
appenddôjde k alokácii pamäti. - Ak je slice nil, potom
len(s) == 0acap(s) == 0.
Použitie append s nil-slice-ami je teda štandardná prax v Go, ktorá zjednodušuje prácu s dynamickými kolekciami.