package mainimport "fmt"func main() {ch := make(chan int, 10)for i := 0; i < 10; i++ {ch <- i}close(ch)for i := 0; i < 15; i++ {fmt.Printf("--%v--\n", i)va, ok := <-chfmt.Println("----", va, ok)}}
输出:
--0------ 0 true--1------ 1 true--2------ 2 true--3------ 3 true--4------ 4 true--5------ 5 true--6------ 6 true--7------ 7 true--8------ 8 true--9------ 9 true--10------ 0 false--11------ 0 false--12------ 0 false--13------ 0 false--14------ 0 false
可以看到已关闭的channel,数据也会全部被读完,读完之前ok一直为true。读完之后ok为false,value为类型的零值。
