Junior — Middle
Kokios veiksmai yra leidžiami dirbant su slice'u Go kalboje, jei jis nebuvo aiškiai inicializuotas?
sobes.tech AI
Atsakymas iš AI
Go kalboje, jei sluoksnis (slice) nebuvo aiškiai inicializuotas (t.y., turi reikšmę nil), galima atlikti šiuos veiksmus:
- Patikrinti, ar jis yra
nil(pavyzdžiui,if slice == nil), kas naudinga nustatant, ar sluoksnis buvo inicializuotas. - Gauti ilgį ir talpą naudojant
len(slice)ircap(slice).nil-sluoksniui ilgis ir talpa yra 0. - Naudoti operatorių
appendelementų pridėjimui.appendautomatiškai sukurs naują sluoksnį su paskirstyta atmintimi, jei pirminis sluoksnis yranil.
Tačiau negalima prieiti prie sluoksnio elementų pagal indeksą, jei jis yra nil arba tuščias, nes tai sukels paniką.
Pavyzdys:
var s []int // s == nil
fmt.Println(s == nil) // true
fmt.Println(len(s)) // 0
s = append(s, 1) // dabar s yra inicializuotas ir turi [1]