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]