问答详情
源自:5-2 初阶配方 - channel使用如此简单

无缓存channel为什么在如下场景会失败?

func main() {

// 初始化channel

// channel在使用之前,必须进行make初始化

// 否则,它会是一个nil

ch := make(chan int)


// fmt.Println(ch)


// 输入channel

ch <- 1

// go func() {

//  ch <- 1

// }()


// 输出channel

go func() {

fmt.Println(<-ch)

}()


// 关闭channel

//close(ch)


//fmt.Println(ch)

// ch <- 2


//<-ch

time.Sleep(2 * time.Second)

}


提问者:慕粉第一号 2021-08-07 18:14

个回答

  • qq_慕勒1373151
    2022-05-04 10:13:00

    不懂你说的什么意思,你在执行ch <- 1的时候就已经被阻塞住无法继续执行了,所以下面那个goroutine都无法执行,你把上面那个goroutine放在ch<-1上面才行