Go 示例: 遍历通道

之前 的示例中,我们看到了 forrange 如何提供对基本数据结构的迭代。我们也可以使用此语法来迭代从通道接收的值。

package main
import "fmt"
func main() {

我们将遍历 queue 通道中的 2 个值。

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

range 迭代从 queue 接收的每个元素。因为我们在上面 close 了通道,所以迭代在接收完 2 个元素后终止。

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

此示例还表明,可以关闭非空通道,但仍然可以接收剩余的值。

下一个示例:计时器.