Можно ли читать из неинициализированного slice

«Можно ли читать из неинициализированного slice» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Чтение из неинициализированного slice (nil slice) в Go безопасно и вернёт нулевые значения. Однако попытка индексации за пределами длины вызовет панику.

var s []int       // nil slice
fmt.Println(s[0]) // panic: runtime error: index out of range [0] with length 0
fmt.Println(s)    // [] - безопасно, выведет пустой slice

Ключевые моменты:

  • nil slice ведёт себя как пустой slice при чтении длины (len) и ёмкости (cap)
  • Операции вроде for range работают корректно (не паникуют)
  • Проблемы возникают только при прямой индексации или модификации (через append)

Для безопасности всегда проверяйте len(slice) перед индексацией.