Sobes.tech
Junior — Middle

Какви действия са допустими при работа със слайс в Go, ако той не е бил явно инициализиран?

sobes.tech AI

Отговор от AI

В Go, ако слайсът (slice) не е бил явно инициализиран (т.е. има стойност nil), могат да се извършват следните действия:

  • Проверка дали е nil (например, if slice == nil), което е полезно за определяне дали слайсът е инициализиран.
  • Получаване на дължина и капацитет чрез len(slice) и cap(slice). За nil-слайс, дължината и капацитетът са 0.
  • Използване на оператора append за добавяне на елементи. append автоматично ще създаде нов слайс с разпределена памет, ако оригиналният слайс е nil.

Въпреки това, не може да се достъпва до елементите на слайса по индекс, ако той е nil или празен, тъй като това ще предизвика паника.

Пример:

var s []int // s == nil
fmt.Println(s == nil) // true
fmt.Println(len(s))   // 0
s = append(s, 1)      // сега s е инициализиран и съдържа [1]