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中有用的片段