Sobes.tech
Junior — Middle

Koliko elemenata i kakvu kapacitetu će imati slice nakon dodavanja jednog elementa ako on na početku nije bio inicijalizovan?

sobes.tech АИ

Одговор од АИ

Ako slice u Go-u inicijalno nije inicijalizovan (tj. jednak je nil), i dodate mu jedan element pomoću funkcije append, tada:

  • Broj elemenata (len) nakon dodavanja biće 1.
  • Kapacitet (cap) zavisi od implementacije, ali obično počinje sa malom kapacitetom, na primer 1 ili 2.

Primer:

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

Tako, pri dodavanju prvog elementa u nil-slice u Go-u, Go automatski dodeljuje memoriju za novi slice sa kapacitetom dovoljnim za čuvanje tog elementa.