package main

import "fmt"

func main() {
    // 初始化channel
    // channel在使用之前,必须进行make初始化
    // 否则,它会是一个nil
    ch := make(chan int)

    // fmt.Println(ch)

    // 输出channel
    go func() {
        fmt.Println(<-ch)
    }()

    // 输入channel
    ch <- 1

    // 关闭channel
    close(ch)

    fmt.Println(ch)
    // ch <- 2

    <-ch
}

这样运行是ok的。为什么把ch <- 1 挪到 go func() {

    fmt.Println(<-ch)
}()前就报错 死锁尼