select
A statement is very similar to a case
statement or if
statement in that it allows the program to make decisions. select
The 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)
}
}
}