package main
import(
"fmt"
)
func main() {
channelInt := make(chan int)
for i:= 0; i < 5; i++ {
j := i
go func(j int) {
channelInt <- j
}(j)
}
fmt.Printf("==>%d\n", <-channelInt)
}
####
```go
package main
import "fmt"
func main() {
//创建无缓冲管道
channelInt := make(chan int)
for i := 0; i < 5; i++ {
j := i
//每循环一次,都会创建一个子协程
go func(j int) {
//新创建的子协程是无规律的执行顺序
//考虑到CPU的执行速度,以及操作系统的进程轮询计划,所以不确定哪个数先写进管道
channelInt <- j
fmt.Printf("现在是子协程执行到i==>%d\n", j)
}(j)
}
fmt.Printf("现在执行主协程\n")
fmt.Printf("==>%d\n", <-channelInt)
//可以查看执行结果,就知道为什么你结果一会儿是4或一会儿是0了
}
```
![image.png](https://static.studygolang.com/180727/668630b59c7daa8cb601761e07b8e64c.png)
#5
更多评论