在前面的例子中,我们已经看到了for
和range
语句如何为基本数据结构提供迭代。还可以使用此语法对从通道接收的值进行迭代。
此范围在从队列接收到的每个元素上进行迭代。因为关闭了上面的通道,迭代在接收到2
个元素后终止。
这个示例还示出可以关闭非空信道,但仍然接收剩余值。
所有的示例代码,都放在
F:\worksp\golang
目录下。安装Go编程环境请参考:/tutorial/detail-5562.html
range-over-channels.go
的完整代码如下所示 -
package main import "fmt" func main() { // We'll iterate over 2 values in the `queue` channel. queue := make(chan string, 2) queue <- "one" queue <- "two" close(queue) // This `range` iterates over each element as it's // received from `queue`. Because we `close`d the // channel above, the iteration terminates after // receiving the 2 elements. for elem := range queue { fmt.Println(elem) } }
执行上面代码,将得到以下输出结果 -
F:\worksp\golang>go run range-over-channels.go one two