channel是go区别于其他语言的一个并发原语,其主要可以分为
1)双向channel,既可以发送,也可以接收
2)接收channel,只能向channel写消息,不能反向
3)发送channel,只能接收channel的消息,不能反向
按照是否buffer,又可以分为
1)带缓冲的channel
2)不带缓冲的channel
channel对外提供方法包括
1)cap,返回channel的容量
2)len,返回channel内元素的数量
3)close,关闭chann,对应的读取操作返回nil
4)for range遍历
使用channel常见的错误为:
1)panic,主要发生在
a)close 为 nil 的 chan
b)send 已经 close 的 chan
c)close 已经 close 的 chan
2)goroutine泄露(超时退出,子channel阻塞)
此文章为2月Day17学习笔记,内容来源于极客时间《Go 并发编程实战课》