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