Junior
Kuo skiriasi slices ir arrays Go kalboje?
sobes.tech AI
Atsakymas iš AI
Masyvai turi fiksuotą ilgį, kuris nustatomas jų kūrimo metu. Slydikai (slices) yra dinamiški pagrindinių masyvų vaizdai.
Pagrindiniai skirtumai:
| Bruožas | Masyvas | Slydikas (slice) |
|---|---|---|
| Ilgis | Fiksuotas | Dinamiškas |
| Kūrimas | [N]Tipas (N - dydis) |
[]Tipas arba make([]Tipas, ilgis, talpa) |
| Paveldėjimas | Per vertę | Per nuorodą (į pagrindinį masyvą) |
| Dydžio keitimas | Neįmanoma | Įmanoma (naudojant append) |
Pavyzdžiai:
// Masivo deklaravimas ir inicializavimas
var arr [3]int // masyvas iš 3 elementų, inicializuotas nuliais
arr2 := [2]string{"a", "b"} // masyvas iš 2 eilutės
// Slydiko deklaravimas ir inicializavimas
var slice []int // tuščias slydikas
slice2 := []string{"x", "y", "z"} // slydikas iš 3 eilutės
slice3 := make([]int, 5) // slydikas iš 5 elementų, inicializuotas nuliais
slice4 := make([]int, 2, 5) // slydikas iš 2 elementų, inicializuotas nuliais, su talpa 5
// Slydiko elgesio pavyzdys
arr := [5]int{1, 2, 3, 4, 5}
slice := arr[1:4] // slydikas, nuoroda į arr[1], arr[2], arr[3]
slice[0] = 99 // keičia arr[1]
// Dydžio keitimas
slice = append(slice, 100) // sukuria naują pagrindinį masyvą, jei dabartinis nepakankamas
Slydikai yra lankstesni ir dažnai naudojami vietoj masyvų Go kalboje. Jie suteikia patogų būdą dirbti su duomenų sekcijomis, kurių ilgis gali keistis.