go语言之进阶篇关闭channel
1、关闭channel
package main import (
"fmt"
) func main() {
ch := make(chan int) //创建一个无缓存channel //新建一个goroutine
go func() {
for i := 0; i < 5; i++ {
ch <- i //往通道写数据
}
//不需要再写数据时,关闭channel
close(ch)
//ch <- 666 //关闭channel后无法再发送数据 }() //别忘了() for {
//如果ok为true,说明管道没有关闭
if num, ok := <-ch; ok == true {
fmt.Println("num = ", num)
} else { //管道关闭
break
}
}
}
执行结果:
num = 0
num = 1
num = 2
num = 3
num = 4
go语言之进阶篇关闭channel的更多相关文章
- go语言之进阶篇单向channel的应用 (生产者,消费者模型)
1.单向channel的应用 示例: package main import ( "fmt" ) //此通道只能写,不能读 func producer(out chan<- ...
- go语言之进阶篇单向channel特点
1.单向channel特点 package main //"fmt" func main() { //创建一个channel, 双向的 ch := make(chan int) / ...
- go语言之进阶篇通过range遍历channel内容
1.通过range遍历channel内容 package main import ( "fmt" ) func main() { ch := make(chan int) //创建 ...
- go语言之进阶篇接口转换
1.go语音之进阶篇 示例: package main import "fmt" type Humaner interface { //子集 sayhi() } type Pers ...
- go语言之进阶篇 channel介绍
1.channel介绍 和map类似,channel也一个对应make创建的底层数据结构的引用. 当我们复制一个channel或用于函数参数传递时,我们只是拷贝了一个channel引用,因此调用者何被 ...
- go语言之进阶篇有缓冲channel
1.有缓冲channel 示例: 有缓存会阻塞,当读取完其中数值时,又可以写入. package main import ( "fmt" "time" ) f ...
- go语言之进阶篇无缓冲channel
1.无缓冲channel 示例: package main import ( "fmt" "time" ) func main() { //创建一个无缓存的ch ...
- go语言之进阶篇通过select实现斐波那契数列
一.select作用 Go里面提供了一个关键字select,通过select可以监听channel上的数据流动. select的用法与switch语言非常类似,由select开始一个新的选择块,每个选 ...
- Go语言之进阶篇爬百度贴吧并发版
1.爬百度贴吧并发版 示例: package main import ( "fmt" "net/http" "os" "strco ...
随机推荐
- 算法初级面试题01——认识时间复杂度、对数器、 master公式计算时间复杂度、小和问题和逆序对问题
虽然以前学过,再次回顾还是有别样的收获~ 认识时间复杂度 常数时间的操作:一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作. 时间复杂度为一个算法流程中,常数操作数量的指标.常 ...
- win8预装系统环境下安装win7问题以及双操作系统安装解决
装了许多次机器,各种操作系统,这次在win8的系统上却遇到了一些问题,现总结如下. 实验室老师给了台新DELL机器,原装的是win8操作系统,很不方便,也不想把这个系统做掉,所以就想再装个win7,即 ...
- SecureCRT发送心跳机制保持SSH在线(解决阿里云ECS)
设置如下:
- MikroTik RouterOS官方教程Wiki(入门教程)
https://wiki.mikrotik.com/wiki/Manual:TOC 其实还有一本<ROS从入门到精通> 学习路由可以从这两个教程先入手.
- Mac的brew和brew cask区别以及安装brew cask
brew多用于命令行. brew cask主要用于有GUI的软件,例如VLC等等. brew cask是brew的一个子集,也就是一个扩展. 安装brew cask扩展: ruby -e " ...
- Freescale OSBDM JM60仿真器 BGND Interface
The BGND interface provides the standard 6 pin connection for the single wire BGND signal type devel ...
- SSH 证书登录(实例详解)
SSH 证书登录(实例详解) 客户端通过私钥登录 ssh 服务器 CentOS 7 SSH 使用证书登录 使用私钥 ssh 登陆 CentOS
- Android WebView加载Html右边空白问题的解决方案
用WebView显示Html时,右边会出现一条空白区,如下图所示: 最开始的时候,认为是网页本身的空白. 后来发现网页本身无问题,且这个空白区是跟Scroll Bar 的位置和粗细比较相符,于是去控制 ...
- Make the DbContext Ambient with UnitOfWorkScope(now named DbContextScope by mehdime)
The Entity Framework DbContext (or LINQ-to-SQL DataContext) is a Unit Of Work implementation. That m ...
- Visual Studio断点调试, 无法监视变量, 提示无法计算表达式
在使用Visual Studio 2012进行断点调试时,对某个变量添加监视,出现"无法计算表达式"的提示. 解决办法:依次点击菜单栏中的"调试"→" ...