Junior — Middle
Miks on oluline arvestada slices'i mahtuvust, töötades massiividega Go keeles?
sobes.tech AI
Vastus AI-lt
Go keeles on lõigud (slices) dünaamilised struktuurid, mis sisaldavad viidet massiivile, pikkust ja mahtu (capacity). Lõigu maht määrab, kui palju elemente see saab mahutada ilma uue mälu eraldamiseta.
Oluline on arvestada mahtu, sest:
- Kui lisate elemente
appendabil, siis kui lõigu pikkus ületab mahu, eraldatakse uus massiiv suurema mahuga ja andmed kopeeritakse, mis mõjutab jõudlust. - Mahtu teadmine võimaldab tõhusalt hallata mälu ja vältida tarbetuid eraldusi.
Näide:
s := make([]int, 0, 5) // pikkus 0, maht 5
fmt.Println(len(s), cap(s)) // 0 5
s = append(s, 1, 2, 3, 4, 5)
fmt.Println(len(s), cap(s)) // 5 5
s = append(s, 6) // maht ületatud, eraldatakse uus massiiv
fmt.Println(len(s), cap(s)) // 6 10 (ligikaudu)
Mahtu kontrollides saab optimeerida töötlust lõigudega.