Sobes.tech
Junior — Middle

Jaké množství prvků a jakou kapacitu bude mít slice po přidání jednoho prvku, pokud nebyl na začátku inicializován?

sobes.tech AI

Odpověď od AI

Pokud je slice v Go zpočátku neinicializovaný (tedy je roven nil), a přidáte do něj jeden prvek pomocí funkce append, pak:

  • Počet prvků (len) po přidání bude 1.
  • Kapacita (cap) závisí na implementaci, ale obvykle začíná s malou kapacitou, například 1 nebo 2.

Příklad:

var s []int // nil-slice
s = append(s, 10)
fmt.Println(len(s)) // 1
fmt.Println(cap(s)) // obvykle >= 1

Tímto způsobem, při přidání prvního prvku do nil-slice v Go, Go automaticky alokuje paměť pro nový slice s dostatečnou kapacitou pro uložení tohoto prvku.