031_go语言中的通道遍历
代码演示
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的话,将一直阻塞执行,等待接收第三个值
- 这个例子表明,非空的通道也是可以被关闭的,但是通道中剩下的值仍然可以被接收到