我正在处理的基本代码将通道传递给多个方法。也可以通过嵌套结构访问相同的通道。我可以使用 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
}
要么将其设为公共字段,以便稍后设置。或者使用“构造函数”在启动时构建通道并将其存储在结构中(甚至可能作为私有字段)。
然后所有方法都可以更容易地访问该通道。
- 1 回答
- 0 关注
- 96 浏览
添加回答
举报
0/150
提交
取消