1、关闭channel

  1. package main
  2.  
  3. import (
  4. "fmt"
  5. )
  6.  
  7. func main() {
  8. ch := make(chan int) //创建一个无缓存channel
  9.  
  10. //新建一个goroutine
  11. go func() {
  12. for i := 0; i < 5; i++ {
  13. ch <- i //往通道写数据
  14. }
  15. //不需要再写数据时,关闭channel
  16. close(ch)
  17. //ch <- 666 //关闭channel后无法再发送数据
  18.  
  19. }() //别忘了()
  20.  
  21. for {
  22. //如果ok为true,说明管道没有关闭
  23. if num, ok := <-ch; ok == true {
  24. fmt.Println("num = ", num)
  25. } else { //管道关闭
  26. break
  27. }
  28. }
  29. }

执行结果:

  1. num = 0
  2. num = 1
  3. num = 2
  4. num = 3
  5. num = 4

go语言之进阶篇关闭channel的更多相关文章

  1. go语言之进阶篇单向channel的应用 (生产者,消费者模型)

    1.单向channel的应用 示例: package main import ( "fmt" ) //此通道只能写,不能读 func producer(out chan<- ...

  2. go语言之进阶篇单向channel特点

    1.单向channel特点 package main //"fmt" func main() { //创建一个channel, 双向的 ch := make(chan int) / ...

  3. go语言之进阶篇通过range遍历channel内容

    1.通过range遍历channel内容 package main import ( "fmt" ) func main() { ch := make(chan int) //创建 ...

  4. go语言之进阶篇接口转换

    1.go语音之进阶篇 示例: package main import "fmt" type Humaner interface { //子集 sayhi() } type Pers ...

  5. go语言之进阶篇 channel介绍

    1.channel介绍 和map类似,channel也一个对应make创建的底层数据结构的引用. 当我们复制一个channel或用于函数参数传递时,我们只是拷贝了一个channel引用,因此调用者何被 ...

  6. go语言之进阶篇有缓冲channel

    1.有缓冲channel 示例:  有缓存会阻塞,当读取完其中数值时,又可以写入. package main import ( "fmt" "time" ) f ...

  7. go语言之进阶篇无缓冲channel

    1.无缓冲channel 示例: package main import ( "fmt" "time" ) func main() { //创建一个无缓存的ch ...

  8. go语言之进阶篇通过select实现斐波那契数列

    一.select作用 Go里面提供了一个关键字select,通过select可以监听channel上的数据流动. select的用法与switch语言非常类似,由select开始一个新的选择块,每个选 ...

  9. Go语言之进阶篇爬百度贴吧并发版

    1.爬百度贴吧并发版 示例: package main import ( "fmt" "net/http" "os" "strco ...

随机推荐

  1. Codeforces.810D.Glad to see you!(交互 二分)

    题目链接 \(Description\) 有一个大小为\(k\)的集合\(S\),元素两两不同且在\([1,n]\)内.你可以询问不超过\(60\)次,每次询问你给出\(x,y\),交互库会返回\(\ ...

  2. java集合之Link的比较

    概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). 现在,我们再回头看看总结一下List.内容包括:第1部分 List概括第2部分 ...

  3. 【转载】VC GDI 像素转厘米(英寸)

    [转载]http://blog.sina.com.cn/s/blog_638dd78201018663.html 函数原型:int GetDeviceCaps(int nIndex); 常用的参数有( ...

  4. jersey练习

    package com.tz.router; import java.util.ArrayList; import java.util.Date; import java.util.List; imp ...

  5. Graph database_neo4j 底层存储结构分析(1)

    1       neo4j 中节点和关系的物理存储模型 1.1  neo4j存储模型 The node records contain only a pointer to their first pr ...

  6. CentOS 7安装GitLab 11.4.5

    安装GitLab没必要像网上说的配置那么复杂,也不要自行编译安装,直接使用Omnibus版本即可,也就是综合安装包,注意如下几点: 1.不需要替换Nginx,直接使用GitLab的原生集成,同时这种方 ...

  7. Gson通过借助TypeToken获取泛型参数的类型的方法(转)

    最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...

  8. Oracle数据库备份还原工具之Expdp/IMPdp

    使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用, ...

  9. DMA : Timer Trigger Memory-to-memory mode,

    The DMA channels can also work without being triggered by a request from a peripheral. This mode is ...

  10. golang 引用相对路径package

    My $GOPATH is "/Users/peter/goworkspace" Golang 版本是: go version go1.6 darwin/amd64 在这个work ...