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

我正在处理的基本代码将通道传递给多个方法。也可以通过嵌套结构访问相同的通道。我可以使用 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{}) { }


qq_笑_17
浏览 50回答 1
1回答

一只名叫tom的猫

通道被设计成可以安全复制和并发读/写。所以你的问题更多的是编码方便的问题。为了使代码更具可读性,请参阅下面的建议。如果你发现你经常引用一个公共参数,那么将它移到接收者结构中可能是有意义的,例如type Processor struct {&nbsp;&nbsp; &nbsp; Server&nbsp; &nbsp; &nbsp;*Server&nbsp; &nbsp; MessagesCh <-chan storage.QueueMessage}要么将其设为公共字段,以便稍后设置。或者使用“构造函数”在启动时构建通道并将其存储在结构中(甚至可能作为私有字段)。然后所有方法都可以更容易地访问该通道。
打开App,查看更多内容
随时随地看视频慕课网APP