golang channel 小问题请教

代码1

package main

import (
    "fmt"
)

func main() {
    ch := make(chan int)
    ch <- 1
    fmt.Println(<-ch) // 1

}

代码2

package main

import (
    "fmt"
)

func main() {
    ch := make(chan int, 1)
    ch <- 1
    fmt.Println(<-ch) // 1

}

问题:
为什么代码1会报死锁的错误,而代码2不会报错?

查看回复