golang chansync_select.go
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang chansync_select.go相关的知识,希望对你有一定的参考价值。
package main
import (
"fmt"
)
func f(msg string, n int) (chan string, chan bool) {
ch := make(chan string)
done := make(chan bool)
go func() {
for i:=0; i<n; i++ {
ch <- msg + " please!"
}
done <- true
}()
return ch, done
}
func main() {
ch1, done1 := f("beer", 4)
ch2, done2 := f("juice", 2)
ch3, done3 := f("water", 1)
count := 0
L:
for {
select {
case msg := <-ch1:
fmt.Println(msg)
case msg := <-ch2:
fmt.Println(msg)
case msg := <-ch3:
fmt.Println(msg)
case <-done1:
count++
case <-done2:
count++
case <-done3:
count++
}
if (count > 2) {
break L
}
}
fmt.Println("exit")
}
Golang 学习之路
Golang基础
Golang基础之包概念
Golang基础之数据类型
Golang基础之流程控制
Golang基础之数组
Golang基础之切片
Golang基础之map
Golang基础之函数
Golang基础之指针
Golang基础之结构体
Golang基础之接口
Golang Web开发
Golang 其它
算法
以上是关于golang chansync_select.go的主要内容,如果未能解决你的问题,请参考以下文章
Golang 入门
Golang入门到项目实战 第一个golang应用
golang编译androidso无法加载
golang如何打印内存内容
Golang入门到项目实战 golang匿名函数
json [Golang] golang #golang #snippets中有用的片段