如下例子
func myrange(ch chan int) {
fmt.Println(<-ch)
}
func main() {
ch := make(chan int)
go myrange(ch)
ch <- 1
ch <- 2
ch <- 3
ch <- 4
time.Sleep(1 * time.Second)
}
只会打印 1 剩下的不会打印
func myrange(ch chan int) {
for c := range ch {
fmt.Println(c)
}
}
func main() {
ch := make(chan int)
go myrange(ch)
ch <- 1
ch <- 2
ch <- 3
ch <- 4
time.Sleep(1 * time.Second)
}
当使用range 循环channel 之后
会打印 1,2,3,4
for c := range ch
会不断从channel接受值直到它关闭