```go
func main() {
c := make(chan int)
c <- 1
fmt.Println(<-c)
}
func main() {
c := make(chan int,2)
c <- 1
c <- 2
fmt.Println(<-c)
fmt.Println(<-c)
}
```
为什么第二个不会死锁
若信道是不带缓冲的,那么在接收者收到值前, 发送者会一直阻塞;若信道是带缓冲的,则发送者仅在值被复制到缓冲区前阻塞; 若缓冲区已满,发送者会一直等待直到某个接收者取出一个值为止。
http://docscn.studygolang.com/doc/effective_go.html#信道
#7