Sobes.tech
Junior — Middle

Aké množstvo prvkov a akú kapacitu bude mať slice po pridaní jedného prvku, ak pôvodne nebol inicializovaný?

sobes.tech AI

Odpoveď od AI

Ak je slice v Go na začiatku neinitializovaný (t.j. je rovný nil), a pridáte do neho jeden prvok pomocou funkcie append, potom:

  • Počet prvkov (len) po pridaní bude 1.
  • Kapacita (cap) závisí od implementácie, ale zvyčajne začína s malou kapacitou, napríklad 1 alebo 2.

Príklad:

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

Takže, pri pridávaní prvého prvku do nil-slice v Go, Go automaticky pridelení pamäť pre nový slice s dostatočnou kapacitou na uloženie tohto prvku.