Ответ
Чтение из неинициализированного 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
Ключевые моменты:
nilslice ведёт себя как пустой slice при чтении длины (len) и ёмкости (cap)- Операции вроде
for rangeработают корректно (не паникуют) - Проблемы возникают только при прямой индексации или модификации (через
append)
Для безопасности всегда проверяйте len(slice) перед индексацией.