Sobes.tech
Senior

Kas yra slice ir kaip jis skiriasi nuo masyvo?

sobes.tech AI

Atsakymas iš AI

Go kalboje masyvas (array) yra fiksuoto dydžio struktūra, kuri saugo vieno tipo elementus. Masyvo dydis nustatomas deklaracijos metu ir negali būti keičiamas programos vykdymo metu.

Slice yra dinamiška, dydžio keitimo galimybę turinti masyvo dalis. Tai struktūra, kuri turi rodyklę į masyvą, ilgį ir talpą. Slices leidžia dirbti su masyvo potipiais ir automatiškai plečiasi, kai to reikia.

Pagrindiniai skirtumai:

  • Dydis: masyvas turi fiksuotą dydį, slice — dinamiškas.
  • Paveldėjimas: masyvai perduodami pagal vertę (kopijuojami), slices — pagal nuorodą (rodyklė į masyvą).
  • Lankstumas: slice galima išplėsti naudojant append funkciją, masyvas — ne.

Pavyzdys:

var arr [3]int = [3]int{1, 2, 3} // fiksuoto dydžio masyvas

var s []int = arr[0:2] // slice, nurodantis į dalį masyvo

s = append(s, 4) // slice plečiasi, jei reikia, sukuriamas naujas masyvas