免费资源网 – https://freexyz.cn/
本文主要介绍了go语言go func(){select{}}()的用法,具体如下:
go func(){
select{
......
}
}()
是使用Goroutine和Channel的一个例子,也是Go语言中异步编程的标志之一。
具体来说,这段代码创建了一个无限循环,然后使用select关键字监控任意数量的channel,一旦其中有一个channel准备好了,就会执行其对应的代码块。
这种代码模式可以帮助实现高效的事件循环,在同时处理多个事件的情况下保持高效且不卡住整个程序,很适合在高并发、网络编程等场景中使用。
package main
import (
"fmt"
"time"
)
func main() {
ch1 := make(chan string)
ch2 := make(chan string)
go func() {
for {
select {
case msg1 := <-ch1:
fmt.Println("Received message from ch1: ", msg1)
case msg2 := <-ch2:
fmt.Println("Received message from ch2: ", msg2)
case <-time.After(time.Millisecond * 500):
fmt.Println("Timed out!")
}
}
}()
ch1 <- "来自 channel-1 的消息"
time.Sleep(time.Second)
ch2 <- "来自 channel-2 的消息"
time.Sleep(time.Second)
ch1 <- "另一个来自 channel-1 的消息"
time.Sleep(time.Second * 2)
}
运行结果
Received message from ch1: 来自 channel-1 的消息
Timed out!
Received message from ch2: 来自 channel-2 的消息
Timed out!
Timed out!
Received message from ch1: 另一个来自 channel-1 的消息
Timed out!
Timed out!
Timed out!
免费资源网 – https://freexyz.cn/
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)