select statement in Go

selectA statement is very similar to a casestatement or ifstatement in that it allows the program to make decisions. selectThe statement differs in that it only applies to channels 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)
		}
	}
}

Guess you like

Origin blog.csdn.net/ftell/article/details/123558041
Recommended