在线文档  >   Golang练习   >   通道遍历

在之前的Go示例中,我们看到了 for 和 range 如何提供基本数据结构的遍历。我们也可以使用这种语法来遍历从通道收到的值。

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

此示例还表明,一个非空的通道也是可以关闭的, 并且,通道中剩下的值仍然可以被接收到。