Go 中的 select 语句

select 语句与 case 语句或 if 语句非常相似,因为它允许程序做出决定。 select 语句的不同之处在于它只适用于通道 channel。

package main

import (
	"fmt"
	"time"
)

// chan1, chan2 both are channels that has strings in it
var chan1 = make(chan string)
var chan2 = make(chan string)

func task1() {
    
    
	time.Sleep(1 * time.Second)
	chan1 <- "one"
}
func task2() {
    
    
	time.Sleep(2 * time.Second)
	chan2 <- "two"
}

func main() {
    
    
	go task1()
	go task2()

	for i := 0; i < 2; i++ {
    
    
		// select 所做的只是等待特定通道将要接收到的信息
		select {
    
    
		case msg1 := <-chan1:
			fmt.Println("received", msg1)
		case msg2 := <-chan2:
			fmt.Println("received", msg2)
		}
	}
}

猜你喜欢

转载自blog.csdn.net/ftell/article/details/123558041
今日推荐