我正在学习Go,在这个例子中,我可以看到select语句允许一个goroutine等待多个通信操作。
我们真的需要一个select语句吗?在没有select语句的情况下,我的下面也会这样做
func runForChannel1(channel1 chan string) {
time.Sleep(1 * time.Second)
channel1 <- "Hi Arun ... I am Channel-1"
}
func runForChannel2(channel2 chan string) {
time.Sleep(2 * time.Second)
channel2 <- "Hi Arun ... I am Channel-2"
}
func testSelect() {
channel1 := make(chan string)
channel2 := make(chan string)
go runForChannel1(channel1)
go runForChannel2(channel2)
chval1, chval2 := <-channel1, <-channel2
fmt.Println(chval1, chval2)
}
func main() {
testSelect()
}没有select状态,我就可以等待两个通道得到它们的值.为什么我们需要Select语句?谁能教我一下吗?
发布于 2019-03-04 07:13:28
我们真的需要select语句吗?
是。没有任何用户代码能够选择几个可能的通道操作中的一个,如果有几个可以执行,则没有(默认),如果没有准备好的情况。
(您的代码做了完全不同的事情。)
发布于 2022-11-08 07:51:32
我认为在戈朗创建选择箱是个坏主意。
https://stackoverflow.com/questions/54978013
复制相似问题