無緩存channel為什么在如下場景會失?。?/h1>
func main() {
// 初始化channel
// channel在使用之前,必須進(jìn)行make初始化
// 否則,它會是一個(gè)nil
ch := make(chan int)
// fmt.Println(ch)
// 輸入channel
ch <- 1
// go func() {
// ?ch <- 1
// }()
// 輸出channel
go func() {
fmt.Println(<-ch)
}()
// 關(guān)閉channel
//close(ch)
//fmt.Println(ch)
// ch <- 2
//<-ch
time.Sleep(2 * time.Second)
}
func main() {
// 初始化channel
// channel在使用之前,必須進(jìn)行make初始化
// 否則,它會是一個(gè)nil
ch := make(chan int)
// fmt.Println(ch)
// 輸入channel
ch <- 1
// go func() {
// ?ch <- 1
// }()
// 輸出channel
go func() {
fmt.Println(<-ch)
}()
// 關(guān)閉channel
//close(ch)
//fmt.Println(ch)
// ch <- 2
//<-ch
time.Sleep(2 * time.Second)
}
2022-05-04
不懂你說的什么意思,你在執(zhí)行ch <- 1的時(shí)候就已經(jīng)被阻塞住無法繼續(xù)執(zhí)行了,所以下面那個(gè)goroutine都無法執(zhí)行,你把上面那個(gè)goroutine放在ch<-1上面才行