Sobes.tech
Junior — Middle

Kui palju elemente ja millist mahtu omab viil pärast ühe elemendi lisamist, kui see algselt ei olnud initsialiseeritud?

sobes.tech AI

Vastus AI-lt

Kui slice Go-s ei ole algselt initsialiseeritud (starp nil), ja lisate sellele ühe elemendi append funktsiooni abil, siis:

  • Pärast lisamist elementide arv (len) on 1.
  • Mahutavus (cap) sõltub rakendusest, kuid tavaliselt algab väikesest mahutavusest, näiteks 1 või 2.

Näide:

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

Seega, kui lisate esimese elemendi nil-slice'ile Go-s, eraldab Go automaatselt mälu uuele slice'ile, mille mahutavus on piisav selle elemendi salvestamiseks.