golang中的通道是什么
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章给大家分享的是有关golang中的通道是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。golang中的通道类型是一种特殊的类型, 类型名字为chan。在任何时候
千家信息网最后更新 2026年11月03日golang中的通道是什么
这篇文章给大家分享的是有关golang中的通道是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
golang中的通道类型是一种特殊的类型, 类型名字为chan。在任何时候,同时只有一个goroutine访问通道进行并发和获取数据,goroutine间通过通道就可以进行通信。我们可以通过go关键字创建goroutine。
通道本身是同步的,通道的发送和接受数据默认是同步的,且遵循先进先出的规则以保证数据发送的顺序。
通道分为双向通道和单向通道。
双向通道:
chan1 := make(chan int, 10)
单向通道:
#单向只写通道,10 表示通道的容量chan2 := make(chan <- int, 10)#单向只读通道,10表示通道的容量chan3 := make(<- chan int, 10)
package mainimport ( "time" "github.com/golang/glog")func read(readChan <-chan int) { for data := range readChan { glog.Info(data) }}func write(writeChan chan<- int) { for i := 0; i < 100; i++ { writeChan <- i glog.Infof("write: %s", i) }}func main() { // 双向通道 writeReadChan := make(chan int) // 传入双向通道自动会转换成一个单项通道 go write(writeReadChan) glog.Info("start to read data from channel!") // 传入双向通道会自动转换成一个单项通道` go read(writeReadChan) // 关闭chan close(writeReadChan) time.Sleep(time.Second * 100) glog.Info("finishedAll!!")}通道分无缓冲通道和缓冲通道
无缓冲通道
unbufferChan1 := make(chan int)unbufferChan2 := make(chan int, 0)
缓冲通道
bufferChan := make(chan int, 1)
无缓冲通道的特点是,发送的数据需要被读取后,发送才会完成,它阻塞场景:
通道中无数据,但执行读通道。
通道中无数据,向通道写数据,但无协程读取。
func occasion1() { noBufChan := make(chan int) <-noBufChan fmt.Println("read ")}// 场景2func occasion2() { ch := make(chan int) ch <- 1 fmt.Println("write success no block")}有缓存通道的特点是,有缓存时可以向通道中写入数据后直接返回,缓存中有数据时可以从通道中读到数据直接返回,这时有缓存通道是不会阻塞的,它阻塞场景是:
通道的缓存无数据,但执行读通道。
通道的缓存已经占满,向通道写数据,但无协程读。
// 场景1func occasion1() { bufCh := make(chan int, 2) <-bufCh fmt.Println("read from no buffer channel success")}// 场景2func occasion2() { ch := make(chan int, 2) ch <- 1 ch <- 2 ch <- 3 fmt.Println("write success no block")}感谢各位的阅读!关于"golang中的通道是什么"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
通道
数据
缓存
双向
场景
缓冲
单向
类型
阻塞
内容
单项
容量
更多
特点
篇文章
同步
不错
实用
特殊
先进
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网品科技
互联网公司 科技公司
互联网 科技创新
互联网金融科技创新
小马过河互联网科技
互联网科技缩写
互联网科技英文翻译
顺网科技2021年互联网排名
科技互联网的估值
辽宁互联网新科技
开一家科技互联网公司需要多少钱
南博望互联网科技有限公司
沐思想互联网科技有限公司
伍佰万互联网科技怎么赚钱
互联网领先科技宣传片
互联网相关科技技术
云鲸互联网络科技有限公司
张家口科技产业互联网平台
北京军民互联网科技公司
网互联网络科技
广州互联网络科技有限公司
美国互联网黑科技
开启互联网科技时代小说
天速互联网络科技有限公司
茂名市互联网科技产业园
移动互联网科技公司
移动互联网年度科技创新
银行科技岗属于互联网吗
美国五大互联网科技公司市值多少
中国主要互联网科技公司