Sobes.tech
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) ir cap(slice). nil-sluoksniui ilgis ir talpa yra 0.
  • Naudoti operatorių append elementų pridėjimui. append automatiškai sukurs naują sluoksnį su paskirstyta atmintimi, jei pirminis sluoksnis yra nil.

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]