go语言go func(){select{}}()的用法

来自:网络
时间:2024-03-30
阅读:
免费资源网 - 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/
返回顶部
顶部