Junior — Middle
Можете ли објаснити како је реализована структура динамичког низа (slice) у програмском језику?
sobes.tech АИ
Одговор од АИ
U jeziku Go, slice je dinamički niz koji predstavlja strukturu sa tri glavna polja:
- Pokazivač na niz: slice sadrži referencu na osnovni niz gde se čuvaju podaci.
- Dužina (len): broj dostupnih elemenata za čitanje i pisanje.
- Kapacitet (cap): maksimalan broj elemenata koje može da primi osnovni niz bez alokacije nove memorije.
Kada slice dostigne svoj kapacitet i potrebno je dodati novi element, alocira se novi veći niz, kopiraju se postojeći podaci i ažurira pokazivač slice-a.
Primer:
s := make([]int, 0, 3) // dužina 0, kapacitet 3
s = append(s, 1, 2, 3) // sada dužina 3
s = append(s, 4) // kapacitet je prekoračen, alocira se novi niz
Na ovaj način, slice-ovi olakšavaju rad sa dinamičkim nizovima, skrivajući detalje upravljanja memorijom.