range
range可以在for循环中读取channel,其迭代值产生为在该信道上发送的连续值,直到该信道被关闭。
package main
import (
"fmt"
)
func main() {
ch := make(chan int)
go func () {
for i := 0; i < 10; i++ {
ch <- i
}
}()
for w := range ch {
fmt.Println(w)
if w > 5 {
//break // 在这里break循环也可以
close(ch)
}
}
fmt.Println( "after range or close ch!" )
}
结果为:
0
1
2
3
4
5
6
after range or close ch!