Можно ли использовать Range для каналов

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

Ответ

Да, можно. range для каналов позволяет итерировать по значениям, которые приходят в канал, пока канал не будет закрыт. После закрытия канала цикл завершается.

Пример:

ch := make(chan int)
go func() {
    defer close(ch)
    for i := 0; i < 3; i++ {
        ch <- i
    }
}()

for v := range ch {
    fmt.Println(v) // Выведет 0, 1, 2
}

Важно: если канал не закрыть, range будет ждать новых значений, что может привести к deadlock.