Junior — Middle
Kiek elementų ir kokią talpą turės srautas po vieno elemento pridėjimo, jei jis iš pradžių nebuvo inicializuotas?
sobes.tech AI
Atsakymas iš AI
Jei slice Go pradžioje nėra inicializuotas (t.y., lygus nil), ir į jį pridėsite vieną elementą naudodami append funkciją, tada:
- Po pridėjimo elementų skaičius (len) bus 1.
- Talpa (cap) priklausys nuo įgyvendinimo, tačiau paprastai ji prasideda nuo mažo dydžio, pavyzdžiui, 1 arba 2.
Pavyzdys:
var s []int // nil-slice
s = append(s, 10)
fmt.Println(len(s)) // 1
fmt.Println(cap(s)) // paprastai >= 1
Taigi, pridėjus pirmąjį elementą prie nil-slice Go, Go automatiškai paskirsto atmintį naujam slice su pakankamu talpumu šiam elementui saugoti.