GoChannel的使用和底层原理(上)

2023年 8月 16日 49.6k 0

前言

channel是Go语言的核心类型,可以理解为管道,通过channel并发核心单元就可以发送或者接收数据进行通讯。Go的Goroutine是实际并发执行的实体,Goroutine通过channel来实现通信。通道的特性像队列,遵循先进先出(FIFO)规则,保证收发数据的顺序。

写之前在列举关于channel的章节时,发现一篇文章出来的话会篇幅过长,所以打算分为上下两篇进行整理,上篇主要是一些使用和底层结构以及channel的创建,下篇主要在收发以及关闭channel的代码和逻辑上面。

1:声明和初始化

通道的声明如下:

var 通道变量 chan 通道类型
var ch1 chan int

声明后的通道类型是空值nil,给一个nil channel发送数据,造成永远阻塞、从一个nil channel接收数据,造成永远阻塞,就像 map 和 slice 数据类型一样, channel必须进行make后才能使用

//通道实例 = make(chan 数据类型, 容量)
ch1 := make(chan int, 10)

容量代表Channel容纳的最多的元素的数量,代表Channel的缓存的大小,如果没有设置容量,或者容量设置为0, 说明Channel没有缓存,在后面的channel的类型中会说到不同类型channel的区别。

2:基本操作

channel的操作符是

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论