go语言go func(){select{}}()的用法
脚本之家 / 编程助手:解决程序员“几乎”所有问题!
脚本之家官方知识库 → 点击立即使用
本文主要介绍了go语言go func(){select{}}()的用法,具体如下:
是使用Goroutine和Channel的一个例子,也是Go语言中异步编程的标志之一。
具体来说,这段代码创建了一个无限循环,然后使用select关键字监控任意数量的channel,一旦其中有一个channel准备好了,就会执行其对应的代码块。
这种代码模式可以帮助实现高效的事件循环,在同时处理多个事件的情况下保持高效且不卡住整个程序,很适合在高并发、网络编程等场景中使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 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!
到此这篇关于go语言go func(){select{}}()的用法的文章就介绍到这了,更多相关go func(){select{}}()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
最新评论