2.软文推荐
3.软文推荐
select 是Go语言中常用的一个关键字,Linux再也早也引入了这个函数,用来实现非阻塞的一种方式,一个select语句用来选择哪个case中的发送或接收操作可以被立即执行。它类似于switch语句,但是它的case涉及到channel有关的I/O操作。
select{
case case处理语句
case chan2 case处理语句
default:
// 如果上面都没有成功,则进入default处理语句
}
12345678
go有一个特殊的关键字select,它允许用户从多个通道中选择一个通道来接收。
package main
import (
"fmt"
"time"
)
func ping1 (c chan string){
time.Sleep(time.Second*1)
c "ping on channel1"
}
func ping2 (c chan string){
time.Sleep(time.Second*2)
c "ping on channel2"
}
func main(){
channel1 := make(chan string)
channel2 := make(chan string)
go ping1(channel1)
go ping2(channel2)
select {
case msg1 := "received",msg1)
case msg2 := "received",msg2)
case "no messages")
}
}
如果先接收到channel1就先执行channel1分支,如果接收到channel2,就执行channel2分支,如果在规定的时间没有接收到消息,就会执行超时的分支。 程序调用内置的close函数关闭了通道,关闭通道并不会导致通道的机能完全停止,他的作用就是通知其他正在尝试从这个通道接收值的goroutine,这个通道已经不会再接受到任何值了。 case msg, ok1 =
package main
import (
"fmt"
)
func callerA(c chan string) {
c "hello world"
close(c)
}
func callerB(c chan string) {
c "hello zhangsan"
close(c)
}
func main() {
a, b := make(chan string), make(chan string)
go callerA(a)
go callerB(b)
var msg string
ok1, ok2 := true, true
for ok1 || ok2 {
select {
case msg, ok1 = if ok1 {
fmt.Printf("%s from A
", msg)
}
case msg, ok2 = if ok2 {
fmt.Printf("%s from B
", msg)
}
}
}
}
本文来源:www.lxlinux.net/10986.html,若引用不当,请联系修改。

立即
返回
1
目录:1、租用香港服务器和租用菲律宾服务器有什么区别?2、菲律宾服务器租用贵吗?3、租用菲律宾服务器有什么优势?租用香港服务器...