고루틴 공부하다가 채널 예제 따라 치는데 실행하자마자 죽어버립니다. 코드는 딱 이게 전부예요.


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


돌리면 이렇게 뜹니다.


fatal error: all goroutines are asleep - deadlock!


보내고 바로 아래서 받는데 왜 잠든 상태라고 하는지 이해가 안 가요. 순서대로 위에서 넣고 아래서 꺼내면 되는 거 아닌가요? 버퍼 사이즈 지정 안 해서 그런 건가 싶긴 한데 정확한 이유가 궁금합니다.