
文章插图
我们可以在使用make函数初始化通道的时候为其指定通道的容量,例如:
func main() {ch := make(chan int, 1) // 创建一个容量为1的有缓冲区通道ch <- 10fmt.Println("发送成功")}
只要通道的容量大于零,那么该通道就是有缓冲的通道,通道的容量表示通道中能存放元素的数量 。就像你小区的快递柜只有那么个多格子,格子满了就装不下了,就阻塞了,等到别人取走一个快递员就能往里面放一个 。我们可以使用内置的len函数获取通道内元素的数量,使用cap函数获取通道的容量,虽然我们很少会这么做 。
七 close()可以通过内置的close()函数关闭channel(如果你的管道不往里存值或者取值的时候一定记得关闭管道)
package mainimport "fmt"func main() {c := make(chan int)go func() {for i := 0; i < 5; i++ {c <- i}close(c)}()for {if data, ok := <-c; ok {fmt.Println(data)} else {break}}fmt.Println("main结束")}
八 通道总结channel常见的异常总结,如下图:
文章插图
注意:关闭已经关闭的channel也会引发panic 。
【Go_Channel详解】
推荐阅读
- gitee仓库上传文件的步骤
- 黑色沙漠手游10月25日微信每日一题答案是什么
- 王者荣耀10月25日微信每日一题答案是什么
- 为什么九一八又称柳条湖事件 柳条湖事件
- Docker | 容器数据卷详解
- MyBatis之ResultMap的association和collection标签详解
- 完 golang开发:go并发的建议
- 新剑侠情缘10月25日微信每日一题答案是什么
- 中国10大钻戒品牌是什么, 你最喜欢哪一款?
- 笔仙怎么玩……一个人又该怎么玩(笔仙的步骤)