我只是在我的 Ubuntu 64 位环境中试验 Go 通道,并对以下程序产生的输出感到困惑。
我得到输出:0 1 2 3 退出
当我取消注释两个注释行时的输出:0 1 2 3 4 Exit
请解释行为。TIA。
package main
import (
"fmt"
//"time"
)
func main() {
ch := make(chan int)
done := make(chan bool)
go func() {
for i := 0; i < 5; i++ {
ch <- i
}
//time.Sleep(1 * time.Second)
done <- false
}()
go func() {
for {
select {
case message := <-ch:
fmt.Println(message)
case <-done:
return
}
}
}()
<-done
fmt.Println("Exit")
}
汪汪一只猫
明月笑刀无情
DIEA
相关分类