为了账号安全,请及时绑定邮箱和手机立即绑定

将通道传递给方法或直接访问嵌套结构对象

将通道传递给方法或直接访问嵌套结构对象

Go
qq_笑_17 2022-11-28 17:12:00
我正在处理的基本代码将通道传递给多个方法。也可以通过嵌套结构访问相同的通道。我可以使用 p.Server.logCh 访问相同的 logCh。我知道通道非常轻量级,可以传递,但有理由不直接访问它吗?将有多个并发的 goroutines 访问同一个通道。type Processor struct {     Server *Server }func (p *Processor) Process(messagesCh <-chan storage.QueueMessage, logCh chan<- model.Log, done chan struct{}) { }
查看完整描述

1 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

通道被设计成可以安全复制和并发读/写。所以你的问题更多的是编码方便的问题。


为了使代码更具可读性,请参阅下面的建议。


如果你发现你经常引用一个公共参数,那么将它移到接收者结构中可能是有意义的,例如


type Processor struct { 

    Server     *Server

    MessagesCh <-chan storage.QueueMessage

}

要么将其设为公共字段,以便稍后设置。或者使用“构造函数”在启动时构建通道并将其存储在结构中(甚至可能作为私有字段)。


然后所有方法都可以更容易地访问该通道。


查看完整回答
反对 回复 2022-11-28
  • 1 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号