package mainimport "fmt"func main()  {c := make(chan int, 1)select {case c <- 10 :         // 写入chan}select {case c <- 20 :         // 写入chan,写不进去就丢弃default:}value , ok := <- c    // 从chan中读取,ok是用来判断通道c是否关闭,// 如果通道c关闭,仍然有数据,则ok为true,直到没有数据ok为falsefmt.Printf("value(%T)(%v) = %v\n",value, ok, value)close(c)value , ok = <- c   // 从chan中读取fmt.Printf("value(%T)(%v) = %v\n",value, ok, value)}

value(int)(true) = 10
value(int)(false) = 0


带缓存chan

package main
import ("fmt""time"
)
func send(p chan<- int) {for i := 0; i < 5; i++ {p <- ifmt.Println("send:", i)}
}func receive(c <-chan int) {for i := 0; i < 5; i++ {v := <-cfmt.Println("receive:", v)}
}func main() {ch := make(chan int,5)go send(ch)go receive(ch)time.Sleep(1 * time.Second)
}

send: 0
send: 1
send: 2
send: 3
send: 4
receive: 0
receive: 1
receive: 2
receive: 3
receive: 4


不带缓存chan

package main
import ("fmt""time"
)
func send(p chan<- int) {for i := 0; i < 5; i++ {p <- ifmt.Println("send:", i)}
}func receive(c <-chan int) {for i := 0; i < 5; i++ {v := <-cfmt.Println("receive:", v)}
}func main() {ch := make(chan int)go send(ch)go receive(ch)time.Sleep(1 * time.Second)
}

receive: 0
send: 0
send: 1
receive: 1
receive: 2
send: 2
send: 3
receive: 3
receive: 4
send: 4

package main
import ("fmt""time"
)
func send(p chan<- int) {for i := 0; i < 3; i++ {p <- ifmt.Println("send:", i)}
}func receive(p <- chan int){for{select{case <-p:fmt.Println("hello world")}}}func main() {ch := make(chan int)go send(ch)go receive(ch)time.Sleep(1 * time.Second)
}

send: 0
hello world
hello world
send: 1
send: 2
hello world

golang chan相关推荐

  1. golang chan 探究

    前言 之前在看golang多线程通信的时候, 看到了go 的管道. 当时就觉得这玩意很神奇, 因为之前接触过的不管是php, java, Python, js, c等等, 都没有这玩意, 第一次见面, ...

  2. golang chan总结

    goroutine和chan配合是golang的核心技术, 必须深入研究一下使用方法. 无缓冲chan 进和出都会阻塞. 例1: func main() {ch := make(chan error) ...

  3. python游戏服务器框架_mqant首页、文档和下载 - Golang/python语言开发的分布式游戏服务器框架 - OSCHINA - 中文开源技术交流社区...

    mqant mqant 是一款基于 Golang 语言的简洁,高效,高性能的分布式游戏服务器框架,研发的初衷是要实现一款能支持高并发,高性能,高实时性的游戏服务器框架,也希望 mqant 未来能够做即 ...

  4. golang实现andflow流程引擎

    1.andflow引擎 andflow_js可以实现在Html端设计流程,并将设计结果保存为json模型,andflow可以用于设计业务流程.数据处理流程.工作流.控制流等一切可流程化的过程. 由于g ...

  5. 高性能分布式游戏服务器框架

    欢迎大家Fork mqant开源框架 为什么决定要重新造一个轮子? 目前网上优秀的开源游戏服务器框架也不少(当然与web框架比起来就少太多了),但总结起来都各有各的优缺点,下面列出我在选型过程中的一些 ...

  6. Chrome | BookMarks

    Bookmarks 书签栏 按键作者认证专题-首页 那山那水那个小陈 QQ邮箱 韩立刚老师主讲 计算机网络第5版谢希仁编写 全集156集_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili ERP系统 ...

  7. golang源码分析:调度器chan调度

    golang调度机制chan调度 golang的调度策略中,碰见阻塞chan就会将该chan放入到阻塞的g中,然后再等待该chan被唤醒,这是golang调度器策略的主动调度策略之一,其中还有其他的主 ...

  8. golang基础-chan的select操作、定时器操作、超时控制、goroutine中使用recover

    chan的只读和只写 a.只读chan的声明 Var 变量的名字 <-chan int Var readChan <- chan int b. 只写chan的声明 Var 变量的名字 ch ...

  9. 【转】Golang 关于通道 Chan 详解

    原文: http://blog.csdn.net/netdxy/article/details/54564436 在用 chan 类型时,发生死锁的错误,表面上看不出什么问题 ------------ ...

  10. golang数据结构初探之管道chan

    golang数据结构初探之管道chan 管道是go在语言层面提供的协程之间的通信方式,比unix的管道更易用也更轻便. 特效速览 初始化 声明和初始化管道的方式主要有以下两种: 变量声明 使用内置函数 ...

最新文章

  1. python array 语法_Python基本语法
  2. HDU 5695 Gym Class 拓扑排序
  3. Spring Boot中实现跨域的五种方式
  4. CV之OD:计算机视觉之目标检测(Object Detection)方向的简介、使用方法、案例应用之详细攻略
  5. 太强了!这个 Jupyter notebook 离线工具可以用一辈子!
  6. 互联网拥塞控制终极指南
  7. 苹果和虫子(信息学奥赛一本通-T1038)
  8. 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
  9. java synchronized 参数_java – 将参数传递给synchronized块的目的是什么?
  10. css中的 font 与 font-size
  11. linux mencoder,linux下mencoder的一些用法
  12. oppo人脸识别解锁黑屏_opporeno4有屏幕指纹识别吗?支持人脸识别解锁吗
  13. 《MarkDown编辑器的使用技巧(修改录入方式与目录生成)|CSDN编辑器测评》
  14. 编译原理入门(一):GNU编辑器(GCC)原理简介
  15. ORA-01438: value larger than specified precision allowed for this column
  16. 无法远程连接到计算机 凭证,远程连接凭据不工作如何处理_远程桌面连接提示凭据无法工作的解决教程-win7之家...
  17. 易捷行云EasyStack入选2021信创云TOP10
  18. 深度学习利器之自动微分(2)
  19. 抖音账号主页设置推荐机制
  20. 盘点上海2010年入市新盘中最值得期待的楼盘

热门文章

  1. eclipse导入项目jsp页面报错完美解决
  2. 教你轻松查看QQ空间加密后的好友图片
  3. Codeforces Round #545 (Div. 2) C. Skyscrapers
  4. 新浪邮箱下载的都是php,为什么我用新浪邮箱以及手机号码注册的支付宝能够登陆,但是用163邮箱的支付宝登陆数据库就会报错...
  5. AttributeError: partially initialized module ‘re‘ has no attribute ‘findall‘
  6. 蒙氏素材1-1000珠链标签蒙特梭利教具
  7. 大麦携演协发布演出市场报告:95后成消费新贵 城市下沉提速
  8. wed简介及html简单标签(1)
  9. 《霍乱时期的爱情》书评
  10. 同程内网流传的分布式凤凰缓存系统手册,竟遭GitHub强行开源下载