1.0.0
Part I
Powered By GitBook
Go语言之select用法

select的用处

    Go的select关键字可以让你同时等待多个通道操作,
    select 会阻塞到某个分支可以继续执行为止,这时就会执行该分支。当多个分支都准备好时会随机选择一个执行。
    select 中的其它分支都没有准备好时,default 分支就会执行。
1
c1 := make(chan string, 1) //定义两个有缓冲通道,容量为1
2
c2 := make(chan string, 1)
3
4
go func() {
5
time.Sleep(time.Second * 1) //每隔1秒发送数据
6
c1 <- "name: xuchao"
7
}()
8
9
go func() {
10
time.Sleep(time.Second * 2) //每隔2秒发送数据
11
c2 <- "age: 25"
12
}()
13
14
for i:=0; i<2; i++ { //使用select来等待这两个通道的值,然后输出
15
select {
16
case msg1 := <- c1:
17
fmt.Println(msg1)
18
case msg2 := <- c2:
19
fmt.Println(msg2)
20
}
21
}
22
23
24
// select默认选择
25
tick := time.Tick(100 * time.Millisecond)
26
boom := time.After(500 * time.Millisecond)
27
for {
28
select {
29
case <-tick:
30
fmt.Println("tick.")
31
case <-boom:
32
fmt.Println("BOOM!")
33
return
34
default:
35
fmt.Println("默认情况....")
36
time.Sleep(50 * time.Millisecond)
37
}
38
}
Copied!
Last modified 1yr ago
Copy link