登录
首页 >  Golang >  Go问答

golang中的关键字“select”如何使用?

来源:stackoverflow

时间:2024-02-08 10:06:22 303浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《golang中的关键字“select”如何使用?》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

我执行了下面的代码,其中包含 select

func fibonacci(c, quit chan int) {
    x, y := 0, 1
    for {
        select {
        case c <- x:
            fmt.Printf("x = %d, y = %d \n", x, y)
            x, y = y, x+y
        case <-quit:
            //fmt.Println(<-c)
            fmt.Println("quit")
            return
        }
    }
}

func main() {
    c := make(chan int)
    quit := make(chan int)
    go func() {
        for i := 0; i < 10; i++ {
            fmt.Println(<-c)
        }
        quit <- 0
    }()
    fibonacci(c, quit)
}

为什么 select 在第 10 次迭代时停止?

c <- x 操作不是总是可能的并且应该将斐波那契数计算到无穷大吗?


正确答案


通道 c 是无缓冲的,因此 c <- x 只能在存在并发 <- c 时才能继续。
此外,如果 c 使用足够大的缓冲区进行缓冲,则 select 不会总是选择它,因为 select 是随机选择的。

到这里,我们也就讲完了《golang中的关键字“select”如何使用?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

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