go select

select的用法与switch非常类似,由select开始一个新的选择块,每个选择条件由case语句来描述。与switch语句可以选择任何可使用相等比较的条件相比,select有比较多的限制,其中最大的一条限制就是每个case语句里必须是一个IO操作,确切的说,应该是一个面向channel的IO操作。

ch1 := make(chan int, 1)

ch2 := make(chan int, 1)

ch1 <- 1

select {

    case e1 := <-ch1:

        //如果ch1通道成功读取数据,则执行该case处理语句

        fmt.Printf("1th case is selected. e1=%v", e1)

    case e2 := <-ch2:

        //如果ch2通道成功读取数据,则执行该case处理语句

        fmt.Printf("2th case is selected. e2=%v", e2)

    default:

        //如果上面case都没有成功,则进入default处理流程

        fmt.Println("default!.")

}

你可能感兴趣的:(go select)