golang 什么时候关闭channel

通知接收方没有更多数据了
ch := make(chan int)

go func() {
    for i := 0; i < 5; i++ {
        ch <- i
    }
    close(ch) // 生产者发完了,通知接收者
}()

for v := range ch {
    fmt.Println(v) // 接收者循环读取直到 channel 被关闭
}

range ch 会在 channel 被关闭且数据读完后自动退出
如果不关闭 channel,接收者会输入内容之后永远阻塞,报
goroutine 1 [chan receive]:
main.main()
        /Users/bot/GolandProjects/test/main.go:12 +0xbc
exit status 2

评论

(= ̄ω ̄=)··· 暂无内容!

回复

邮箱