当前位置: 首页 > news >正文

go 入门学习笔记之 select + chan (十一)

为什么80%的码农都做不了架构师?>>>   hot3.png

 select 可以同时监听多个 channel, 阻塞直到某个分支可执行,若多个都准备好的时候,随机选一个

package main

import(
	"fmt"
)

func fib(c, quit chan int) {
	x, y := 0, 1
	for {
		select {
			case c <- x:
				x, y = y, x+y
			case <- quit:
				fmt.Println("quit")
				return
		}
	}
}

func main() {
	c := make (chan int)
	quit := make(chan int)
	
	go func() {
		for i:=0; i < 10; i++ {
			fmt.Println(<-c)
		}
		quit <- 0
	}()
	
	fib(c, quit)
}

输出:

C:\Go\bin\go.exe run C:\Go\src\flag\s6.go
0
1
1
2
3
5
8
13
21
34
quit

 

package main

import(
	"fmt"
	"time"
)

func main() {
	tick := time.Tick(100 * time.Millisecond)
	boom := time.After(500 * time.Millisecond)
	
	for {
		select {
			case <-tick:
				fmt.Println("tick.")
			case <-boom:
				fmt.Println("BooM!")
				return
			default:
				fmt.Println("  $$")
				time.Sleep(50 * time.Millisecond)
		}
	}
}

输出 :

C:\Go\bin\go.exe run C:\Go\src\flag\s7.go
  $$
  $$
tick.
  $$
  $$
tick.
  $$
  $$
tick.
  $$
  $$
tick.
  $$
  $$
BooM!

 

转载于:https://my.oschina.net/tsh/blog/1548662

相关文章:

  • HTML5 history API实践
  • 项目中使用RDLC报表
  • Workflow笔记2——状态机工作流
  • Octoroit OS VB操作系统简单介绍
  • 【C#】与C及OC的不同点
  • 10个小技巧帮助Devops走向成功
  • [UVA 11825] Hackers' Crackdown
  • Springboot集成Mybatis
  • 11.32 php扩展模块安装
  • vue跨域解决方法
  • 关于android Activity的 theme
  • HTTP 07 追加协议与 Ajax
  • Javascript 面向对象编程—继承和封装
  • 沃土前端社区教程 - es6(7)常用技能点
  • MATH
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • CentOS7 安装JDK
  • ES6核心特性
  • Git的一些常用操作
  • golang中接口赋值与方法集
  • iOS 系统授权开发
  • Java-详解HashMap
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • orm2 中文文档 3.1 模型属性
  • passportjs 源码分析
  • React-Native - 收藏集 - 掘金
  • ReactNative开发常用的三方模块
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • 聚簇索引和非聚簇索引
  • 那些年我们用过的显示性能指标
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 详解移动APP与web APP的区别
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 转载:[译] 内容加速黑科技趣谈
  • #includecmath
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (1)(1.11) SiK Radio v2(一)
  • (9)STL算法之逆转旋转
  • (C++17) std算法之执行策略 execution
  • (HAL库版)freeRTOS移植STMF103
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (九)c52学习之旅-定时器
  • (四) Graphivz 颜色选择
  • (转)程序员技术练级攻略
  • .net core使用ef 6
  • .net Stream篇(六)
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .net生成的类,跨工程调用显示注释
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • @PreAuthorize注解
  • [ JavaScript ] JSON方法