golang chansync_receive.go

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang chansync_receive.go相关的知识,希望对你有一定的参考价值。

package main

import (
	"fmt"
	"sync"
)

var wg sync.WaitGroup

func f(msg string, n int) chan string {
	ch := make(chan string)
	go func() {
		for i:=0; i<n; i++ {
			ch <- msg + " please!"
		}
		wg.Done()
	}()
	return ch
}

func main() {
	wg.Add(3)
	ch1 := f("beer", 4)
	ch2 := f("juice", 2)
	ch3 := f("water", 1)
	done := make(chan bool)

	go func() {
		wg.Wait()
		done <- true
	}()

	L:
	for {
		select {
		case msg := <-ch1:
			fmt.Println(msg)
		case msg := <-ch2:
			fmt.Println(msg)
		case msg := <-ch3:
			fmt.Println(msg)
		case <-done:
			break L
		}
	}
	fmt.Println("exit")
}

Golang入门到项目实战 golang匿名函数

参考技术A go语言函数不能嵌套,但是在函数内部可以定义匿名函数,实现一下简单功能调用。

所谓匿名函数就是,没有名称的函数。

语法格式如下:

当然可以既没有参数,可以没有返回值

运行结果

自己执行

运行结果

以上是关于golang chansync_receive.go的主要内容,如果未能解决你的问题,请参考以下文章

Golang入门到项目实战 第一个golang应用

golang编译androidso无法加载

golang如何打印内存内容

Golang入门到项目实战 golang匿名函数

json [Golang] golang #golang #snippets中有用的片段

golang使用成本高