go语言学习笔记:channel select

package main

import(
    "fmt"
    "time"
)

func main() {
    tick := time.Tick(1 * time.Second)

    select {
    case <-time.After(10 * time.Second):
        fmt.Println("clock!!!!!")
    case <-tick:
        fmt.Println("hello")
    default:
        fmt.Println("default")
    }
}

root@namespace:~/zjx/src# ./f
default

它与C语言中的poll和select函数类似。注意它有如下特点:

1. 它不会阻塞在其中一个channel中

2. 它没有先后顺序,当其中多个条件同时满足时,它的执行顺序是随机的。

3. 与poll等一样,如果有一个条件满足它就会执行下去,如果都不满足则执行default分支内容。如果都不满足则会阻塞下去

posted @ 2017-12-04 10:31  你的KPI完成了吗  阅读(115)  评论(0)    收藏  举报