Ответ
Да, можно. Итерация по nil
-слайсу в Go — это абсолютно безопасная операция. Цикл for range
просто не выполнит ни одной итерации, так как длина nil
-слайса равна 0.
Это избавляет от необходимости делать предварительные проверки на nil
перед циклом.
Пример с nil
-слайсом:
var s []int // s == nil
// Этот код безопасен и не вызовет паники
for i, v := range s {
// Тело цикла не будет выполнено
fmt.Printf("Индекс: %d, Значение: %dn", i, v)
}
fmt.Println("Цикл завершен")
Важно отличать nil
-слайс от пустого слайса. Пустой слайс — это слайс с длиной 0, но он указывает на существующий (хоть и пустой) базовый массив. Итерация по нему также безопасна и не выполнится ни разу.
Пример с пустым слайсом:
s := []int{} // s != nil, но len(s) == 0
for i, v := range s {
// Тело цикла также не будет выполнено
fmt.Printf("Индекс: %d, Значение: %dn", i, v)
}