cpp

Каналы. Цикл 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()")
}

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF