1 / 4 📖 Teorija
Masyvas ir slice — lentyna, kuri auga
Vienas įrašas — gerai, bet kur dėti visą biblioteką? Reikia lentynos.
Masyvas — fiksuoto dydžio lentyna: var shelf [3]Item — lygiai 3 vietos, amžinai. Dydis yra tipo dalis ([3]Item ir [4]Item — skirtingi tipai!). Egzistuoja ir daugiamačiai: var board [3][3]string — 3×3 lenta (kryžiukai-nuliukai). Praktikoje gryną masyvą naudosi retai.
Slice — lentyna, kuri auga: []Item (be skaičiaus). Tai standartinis Go sąrašo tipas:
var items []Item // empty shelf (zero value: nil, safe to use)
items = append(items, Item{Title: "Dune", Pages: 412})
items = append(items, Item{Title: "Hobbit", Pages: 310})
fmt.Println(len(items)) // 2
fmt.Println(items[0].Title) // Dune — numbering starts at 0!
Trys taisyklės:
appendgrąžina naują slice — visada rašykitems = append(items, x)(vienappend(items, x)be priskyrimo rezultatą išmeta).len(items)— kiek įrašų dabar.- Indeksai nuo 0 iki
len-1;items[5]iš 2 įrašų — programa lūžta (panika). Ribas tikrinsim patys.
Patarimas. Nulinė slice reikšmė yra
nil— betlen(nil slice)yra 0 irappendį ją veikia. 2 pamokos saugumo taisyklė galioja ir čia: nedeklaruota lentyna — tiesiog tuščia lentyna.