Go в примерах: Перебор значений из каналов (Range over Channels)

В предыдущем примере мы виделе как for и range позволяют перебирать базовые структуры. Мы так же можем использовать этот синтаксис для чтения значений из канала.

package main
import "fmt"
func main() {

Мы будем итерировать 2 значения в канале queue.

    queue := make(chan string, 2)
    queue <- "one"
    queue <- "two"
    close(queue)

Этот range будет перебирать каждый элемент полученный из канала queue. Но т.к. мы закрыли канал ранее, перебор элементов завершится после получения двух элементов.

    for elem := range queue {
        fmt.Println(elem)
    }
}
$ go run range-over-channels.go
one
two

Этот пример так же демонстрирует, что возможно прочитать данные из канала уже после его закрытия.

Следующий пример: Таймеры (Timers).