Sobes.tech
Back to questions
Junior — Middle
85

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

Companies where asked
ГазпромГазпром
Ecom.tech

Answer from AI

sobes.tech AI

В Go, если слайс не был явно инициализирован (то есть имеет значение 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]