千家信息网

溶解性golang中的空结构体channel的分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,今天就跟大家聊聊有关溶解性golang中的空结构体channel的分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。特点省内存,尤其在事件通信
千家信息网最后更新 2026年11月01日溶解性golang中的空结构体channel的分析

今天就跟大家聊聊有关溶解性golang中的空结构体channel的分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

特点
  • 省内存,尤其在事件通信的时候。

  • struct零值就是本身,读取close的channel返回零值

使用场景
  • 首先事件通知,可以通过写入 通知其他协程,但是只能通知一个。

channel := make(chan struct{})
go func() {
// ... do something
channel <- struct{}{}
}()
fmt.Println(<-channel)
  • 和close进行配合,通知所有相关协程。

在读入被close的channel返回零值,正常的协程是读取不到这个close的。
close之后,所有协程都可以读到。

比较经典的例子就是用于stopChan作为停止channel通知所有协程。
在下面的例子中 我们可以通过s.Stop()通知所有的serverHandler协程停止工作,并且等待他们正常退出。

type Server struct {
serverStopChan chan struct{}
stopWg sync.WaitGroup
}
func (s *Server) Stop() {
if s.serverStopChan == nil {
panic("gorpc.Server: server must be started before stopping it")
}
close(s.serverStopChan)
s.stopWg.Wait()
s.serverStopChan = nil
}
func serverHandler(s *Server){
for {
select {
case <-s.serverStopChan:
return
default:
// .. do something
}
}
}

看完上述内容,你们对溶解性golang中的空结构体channel的分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

内容 结构 分析 事件 例子 可以通过 就是 内存 场景 时候 更多 特点 知识 篇文章 经典 行业 资讯 资讯频道 面的 频道 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 伟宏互联网科技 互联网佳科技有限公司 互联网 科技 互联网科技集团 丰台科技园 互联网 滨湖区互联网智能科技产品供应 银川新华互联网科技学校地址 隆华科技工业互联网 济南华为互联网科技产业总部基地 新华互联网科技2019 创业天下互联网科技有限公司 承德科技产业互联网发展 重庆威客帮互联网科技 银川新华互联网科技学校联系电话 科技赋能视角下互联网保险发展 互联网科技包装股 易租星互联网科技有限公司 山东蛋芒互联网科技有限公司 青岛互联网科技园 广州全民伙伴互联网科技有限公司 南京欣网互联网络科技 喔噻互联网科技有限公司 互联网佳科技有限公司 科技平台互联网 金融科技还是互联网 受益于互联网科技的高速发展 群盈汇互联网科技有限公司 山东有哪些互联网科技公司 互联网金融科技公司的优势 互联网公司属于科技吗
0