代码演示
package main import "fmt" func main() {
queue := make(chan string, 2)
queue <- "one"
queue <- "two"
close(queue)
for elem := range queue {
fmt.Println(elem)
}
}
代码运行结果
one
two
代码解读
- for和range为基本的数据结构提供了迭代功能,同样可以用于通道的遍历
- 以上例子是遍历通道queue中的两个值
- 我们close了这个通道,所以遍历完这两个值后结束,如果不close的话,将一直阻塞执行,等待接收第三个值
- 这个例子表明,非空的通道也是可以被关闭的,但是通道中剩下的值仍然可以被接收到