Sobes.tech
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.