Junior — Middle
Kas nutiks su slice ilgiu ir talpa, jei į jį pridėsime 10 elementų, kai jis iš pradžių yra tuščias?
sobes.tech AI
Atsakymas iš AI
Jei turite tuščią slice Go kalboje (ilgis ir talpa yra 0), ir pridėsite į jį 10 elementų naudodami append funkciją, tada:
- Slice ilgis taps 10 — pridėtų elementų skaičius.
- Slice talpa automatiškai padidės, dažniausiai su rezervu, kad išvengtumėte dažnų atminties perrašymų. Tiksli talpa priklauso nuo įgyvendinimo, bet dažnai bus 16 ar daugiau, kad tilptų nauji elementai ir turėtų rezervą būsimoms pridėjimams.
Pavyzdys:
var s []int // tuščias slice
s = append(s, make([]int, 10)...) // pridėti 10 elementų
fmt.Println(len(s)) // 10
fmt.Println(cap(s)) // >=10, dažniausiai 16 ar 20
Taip talpa dinamiškai didėja, efektyviai valdant atmintį, kai slice auga.