Junior — Middle
Ar keičiama prieinamų atminties ar talpos kiekis sumažinus programavimo kalbos skaidinio dydį?
sobes.tech AI
Atsakymas iš AI
Go kalboje, skiltis (slice) yra struktūra, kuri turi nuorodą į masyvą, ilgį ir talpą.
Sumažinus skilties ilgį (pavyzdžiui, naudojant slice = slice[:newLength]), keičiasi tik ilgis — elementų skaičius, prieinamas skaityti ir rašyti. Talpa ir paskirta atmintis lieka tokia pati, nes skiltis vis dar nuoroda į tą patį masyvą.
Jei norite sumažinti talpą ir atlaisvinti atmintį, turite sukurti naują skiltį ir į ją nukopijuoti reikalingus elementus, pavyzdžiui:
oldSlice := []int{1, 2, 3, 4, 5}
newSlice := make([]int, 3)
copy(newSlice, oldSlice[:3])
Taip sumažinus skilties ilgį, nepasikeičia talpa ir paskirta atmintis, todėl atmintis automatiškai neatsinaujina.