Go学习 Day17 Channel

63 阅读1分钟

channel是go区别于其他语言的一个并发原语,其主要可以分为

1)双向channel,既可以发送,也可以接收
2)接收channel,只能向channel写消息,不能反向
3)发送channel,只能接收channel的消息,不能反向

按照是否buffer,又可以分为

1)带缓冲的channel
2)不带缓冲的channel

channel对外提供方法包括

1cap,返回channel的容量
2len,返回channel内元素的数量
3close,关闭chann,对应的读取操作返回nil
4for range遍历

使用channel常见的错误为:

1panic,主要发生在
    a)closenilchan
    b)send 已经 closechan
    c)close 已经 closechan
2)goroutine泄露(超时退出,子channel阻塞)

此文章为2月Day17学习笔记,内容来源于极客时间《Go 并发编程实战课》