這里通道關閉了,外層循環也終止了?
for循環里我加了打印序號,結果顯示通道關閉以后,for循環也結束了。老師,這是什么原因???
package main
import "fmt"
func main() {
????ch4 := make(chan int, 1)
????for i := 0; i < 4; i++ {
????????fmt.Printf("序號:%d\n", i)
????????select {
????????case e, ok := <-ch4:
????????????if !ok {
????????????????fmt.Println("End.")
????????????????return
????????????}
????????????fmt.Println(e)
????????????close(ch4)
????????default:
????????????fmt.Println("No Data!")
????????????ch4 <- 1
????????}
????}
}
2016-10-02
你在main方法體里寫了if !ok {
????fmt.Println("End.")
????????????????return
}
channel通道關閉后,強取數據會產生!ok的結果,進而執行了return,return是指跳出了main方法。