括号里填0与大于0的数为啥输出结果相反?

来源:5-6 Go语言-通道的更多种类

上古神龙

2016-03-31 20:41

括号里填0与大于0的数为啥输出结果相反?

写回答 关注

3回答

  • 红绯鱼
    2016-04-09 12:20:07
    已采纳

    在真机上运行结果是正常的。可断定是远程服务器的问题。望采纳

    上古神龙

    不是啊,我电脑编辑器运行的结果是相反的

    2016-04-13 21:11:07

    共 2 条回复 >

  • up_robin
    2019-01-11 16:02:00

    不懂不要瞎回答,本来填0和大于0的数运行结果就应该是相反的。

    如果填的是0,代表`myChannel`是一个非缓存通道。发送方在向通道值发送数据的时候会立即被阻塞,直到有某一个接收方已从该通道值中接收了这条数据。

    所以在第一个匿名函数执行到`sender <- number`语句之后,便被阻塞了,这时第二个匿名函数开始被执行。等到语句`fmt.Println("Received!", <-receiver)`被执行之后,通道内的值被清空了,`sender <- number`之后的语句继续被执行。所以就会看到

    Received! 6
    Sent!

    这根python中的协程coroutine是类似的

  • 慕姐0836278
    2018-07-15 20:43:21

    那是因为代码的先后。

Go语言第一课

Go语言入门教程,编程之必备知识扩散,打好Go语言编程基础

107752 学习 · 148 问题

查看课程

相似问题