無緩存channel為什么在如下場景會失?。?/h1>
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)
}
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)
}
2022-05-04
不懂你說的什么意思,你在執行ch <- 1的時候就已經被阻塞住無法繼續執行了,所以下面那個goroutine都無法執行,你把上面那個goroutine放在ch<-1上面才行