Go语言中的管道(Channel)总结

yetuweiba ·
Q3说管道做进程间通信是笔误吧
#1
更多评论
```go package main import "fmt" func print(ch chan int) { ch<- 1 fmt.Println("Hello world") } func main() { chs := make([]chan int, 10)//Panic occurs if no initial length: missing len argument to make([]chan int) for i := 0; i < 10; i++ { chs[i] = make(chan int) go print(chs[i]) } for _, ch := range(chs){ <-ch } } ```
#2
10个子协程都是等阻塞等待来取值,取完值以后往下执行,但是这个时候主协程,也就是main函数执行完以后,就把所有子协程给释放了。所以每次打印的结果都不一样,如果time.Sleep(10 * time.Second)等待一下的话,打印还是10行
#3