Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Каналы. Цикл for...range
Получить все данные из канала до момента его закрытия позволяет следующий формат цикла for
:
for <Значение> := range <Канал> {
<Инструкции>
}
Обратите внимание
Если канал не закрывается, то возникнет взаимная блокировка.
Изменим содержимое листинга 18.10 и используем цикл for...range
вместо бесконечного цикла (листинг 18.11).
Листинг 18.11. Цикл for...range
package main
import "fmt"
func main() {
var ch chan int = make(chan int)
go func() {
for i := 0; i < 10; i++ {
ch <- i
}
close(ch) // Закрываем канал
}()
for v := range ch {
fmt.Println(v)
}
fmt.Println("Конец функции main()")
}