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.