登录
首页 >  Golang >  Go问答

在 Go 语言中选择语句的原因

来源:stackoverflow

时间:2024-03-20 08:15:29 128浏览 收藏

**选择语句在 Go 语言中的必要性** 在 Go 语言中,选择语句 (select) 提供了一种在多个通信操作中选择一个或多个操作的方法。当存在多个可能的通道操作时,select 语句允许用户代码显式选择要执行的操作,否则会阻塞。 与传统的方法相比,select 语句提供了更清晰和更具表现力的方式来处理并发性。它允许用户代码明确指定其对通道操作的偏好,从而提高了代码的可读性和可维护性。此外,select 语句还提供了超时和默认行为,使开发人员能够灵活地处理各种并发情况。

问题内容

我正在学习 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 语句?有人可以教育我吗?


解决方案


我们真的需要 select 语句吗?

是的。如果有多个通道操作能够执行,则用户代码无法准确选择多个可能的通道操作之一;如果没有准备好情况,则没有(默认)。

(你的代码做了完全不同的事情。)

我认为在 golang 中创建 select case 是一个坏主意。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>