看下面的代碼片段package mainimport ( "fmt" "time")func sender(ch chan string) { ch <- "Hello" ch <- "Foo" ch <- "and" ch <- "Boo" close(ch)}func main() { ch := make(chan string) go sender(ch) for { select { case value := <-ch: fmt.Println(value) case <-time.After(time.Second * 2): fmt.Println("Return") return } }}結(jié)果我得到了空白輸出和 time.After 將永遠不會到達。為什么?我注意到,當我嘗試從關(guān)閉的通道接收值時,它將從類型接收零值。為什么我仍然可以從關(guān)閉的渠道獲得價值?我也可以檢查也喜歡,v, ok := <-ch如果 ok 為 false,則通道關(guān)閉。
為什么從來沒有到達return語句
慕工程0101907
2021-09-10 21:21:48