********************************************************
package main
import (
"fmt"
)
func main() {
ch := make(chan int,0)
go func() {
for i:=0;i<10;i++{
fmt.Println("子协程:",i)
ch <- i
}
}()
for i:=0; i<10;i++ {
num :=<-ch
fmt.Println("num=",num)
}
}
***************************************************************
//输出为:
子协程: 0
子协程: 1
num= 0
num= 1
子协程: 2
子协程: 3
num= 2
num= 3
子协程: 4
子协程: 5
num= 4
num= 5
子协程: 6
子协程: 7
num= 6
num= 7
子协程: 8
子协程: 9
num= 8
num= 9
*********************************************************
我认为的结果:
子协程: 0
num= 0
子协程: 1
num= 1
子协程: 2
num= 2
略······
*********************************************************
无缓存的,发送和接收不应该是同时吗,但为啥,无缓存的,还能一口气接受2个呢?
没有接受2个,发送接收是同时的,你将fmt.Println("子协程:",i)放到ch<-i下面就好了,但是goruntine是并发执行,所以谁先打印这个没有保证
#1
更多评论
这个速度很快而且是并发,谁先打印没有保证。
![qrcode_for_gh_630d17c4f800_258.jpg](https://static.studygolang.com/180629/35197376e477f9f96a2b4bf796b01594.jpg)
#2