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的话,将一直阻塞执行,等待接收第三个值
  • 这个例子表明,非空的通道也是可以被关闭的,但是通道中剩下的值仍然可以被接收到
posted @ 2018-04-16 17:57  Joestar  阅读(459)  评论(0编辑  收藏  举报