关闭 一个通道意味着不能再向这个通道发送值了。 该特性可以向通道的接收方传达工作已经完成的信息。 |
|
package main |
|
import "fmt" |
|
在这个例子中,我们将使用一个 |
func main() { jobs := make(chan int, 5) done := make(chan bool) |
这是工作协程。使用 |
go func() { for { j, more := <-jobs if more { fmt.Println("received job", j) } else { fmt.Println("received all jobs") done <- true return } } }() |
使用 |
for j := 1; j <= 3; j++ { jobs <- j fmt.Println("sent job", j) } close(jobs) fmt.Println("sent all jobs") |
使用前面学到的通道同步方法等待任务结束。 |
<-done } |
$ go run closing-channels.go sent job 1 received job 1 sent job 2 received job 2 sent job 3 received job 3 sent all jobs received all jobs |
|
根据 |
下一个例子: 通道遍历