猿问

goroutine通道-send语句的值

当我尝试打印时:


fmt.Println(c <-x)

在下面的代码块中的for循环之前,查看“ c <-x”的计算结果,它得到了错误消息:

./select.go:7:发送语句c <-x用作值;使用select进行非阻塞发送


如果发送操作成功,“ c <-x”的评估结果是否为true?以及为什么Go只允许您在select语句内的case语句内使用send语句的值(即“ c <-x”的值)?


    func fibonacci(c, quit chan int) {

        x, y := 1, 1


        for {

            select {

            case c <- x:

                x, y = y, x + y

            case <-quit:

                fmt.Println("quit")

                return

            }

        }

    }

谢谢


慕侠2389804
浏览 188回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答