027_go语言中的通道选择器

Posted 乱七八糟的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了027_go语言中的通道选择器相关的知识,希望对你有一定的参考价值。

代码演示

package main

import "fmt"
import "time"

func main() {
	c1 := make(chan string)
	c2 := make(chan string)
	go func() {
		time.Sleep(time.Second * 1)
		c1 <- "one"
	}()
	go func() {
		time.Sleep(time.Second * 2)
		c2 <- "two"
	}()
	for i := 0; i < 2; i++ {
		select {
		case msg1 := <-c1:
			fmt.Println("received", msg1)
		case msg2 := <-c2:
			fmt.Println("received", msg2)
		}
	}
}

  

代码运行结果

received one
received two

  

代码解读

  • go语言的通道选择器(select)可以同时等待多个通道操作
  • 以上例子就是利用关键字select同时等待创建的两个通道的值
  • 对于select语句而言,它会不断的检测通道是否有值传过来,一旦发现传过来,立刻获取并输出

以上是关于027_go语言中的通道选择器的主要内容,如果未能解决你的问题,请参考以下文章

024_go语言中的缓冲通道

题解PTA团体程序设计天梯赛L1-027 出租 (20 分) Go语言 | Golang

Go Example--通道选择器

当非默认是输入通道时,为啥 go 中的选择总是进入默认情况?

go语言从例子开始之Example32.打点器

Android - 片段中的联系人选择器