make(chan int) 和 make(chan int, 1) 的区别
弄懂了下面的这个例子你就懂了 package main import "fmt" func main() { var c = make(chan int) var a string go func() { a = "hello world" <-c }() c <- 0 fmt.Println(a) } 上面的例子会打印 "hello world" 如果改成 var c = make(chan int, 1) a 可能是 "hello world" 也可能是空,我运行了好多次基本打印的都是空 make(chan int) 是 unbuffered channel, send 之后 send 语句会阻塞执行,直到有人 receive 之后 send 解除阻塞,后面的语句接着执行。 所以执行 c...阅读全文