码迷,mamicode.com
首页 > 其他好文 > 详细

Go_channel的关闭和遍历

时间:2020-01-27 09:35:17      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:channel   循环   range   ntc   width   图片   错误   技术   size   

1. 关闭管道

技术图片

2. 遍历

技术图片

 3. 代码

package main
import (
	"fmt"
)

func main() {

	intChan := make(chan int, 3)
	intChan<- 100
	intChan<- 200
	close(intChan)
	//这是不能够再写入数到channel
	//intChan<- 300
	fmt.Println("okook~")
	//当管道关闭后,读取数据是可以的
	n1 := <-intChan
	fmt.Println("n1=", n1)


	//遍历管道
	intChan2 := make(chan int, 100)
	for i := 0; i < 100; i++ {
		intChan2<- i * 2  //放入100个数据到管道
	}

	//遍历管道不能使用普通的 for 循环
	//len()会变化
	// for i := 0; i < len(intChan2); i++ {

	// }
	//在遍历时,如果channel没有关闭,则会出现deadlock的错误
	//在遍历时,如果channel已经关闭,则会正常遍历数据,遍历完后,就会退出遍历
	close(intChan2)
	for v := range intChan2 {
		fmt.Println("v=", v)
	}


}

 

Go_channel的关闭和遍历

标签:channel   循环   range   ntc   width   图片   错误   技术   size   

原文地址:https://www.cnblogs.com/yzg-14/p/12235381.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!