我正在處理的基本代碼將通道傳遞給多個方法。也可以通過嵌套結構訪問相同的通道。我可以使用 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
}
要么將其設為公共字段,以便稍后設置?;蛘呤褂谩皹嬙旌瘮怠痹趩訒r構建通道并將其存儲在結構中(甚至可能作為私有字段)。
然后所有方法都可以更容易地訪問該通道。
- 1 回答
- 0 關注
- 82 瀏覽
添加回答
舉報
0/150
提交
取消