Sobes.tech
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í append dôjde k alokácii pamäti.
  • Ak je slice nil, potom len(s) == 0 a cap(s) == 0.

Použitie append s nil-slice-ami je teda štandardná prax v Go, ktorá zjednodušuje prácu s dynamickými kolekciami.