Перебор значений из каналов (Range over Channels)|Range over Channels
#
// В [предыдущем](range) примере мы виделе как `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
# Этот пример так же демонстрирует, что возможно
# прочитать данные из канала уже после его закрытия.