请教itemSave 中out chan数据流向问题
来源:17-1 ItemSaver的架构

weixin_慕九州8013434
2022-04-24
func ItemSaver() (chan engine.Item, error) {
out := make(chan engine.Item)
go func() {
itemCount := 0
for {
item := <-out
log.Printf("Item saver got item #%d: %v", itemCount, item)
itemCount++
}
}()
return out, nil
}
老师您好,关于itemSave这章,我对out这个chan的数据来源不太理解,itemSave这个函数没有接收值,out也只是在函数内部开始时声明的内部变量,那他的数据是怎么送进来的呢
写回答
1回答
-
小白小白小白啦
2022-05-04
out被函数返回出去了,在外面送数据的。main函数里面的itemChan就是,然后又传给了engine.ConcurrentEngine
main() { itemChan, err := persist.ItemSaver( config.) err != nil { panic(err) } e := engine.ConcurrentEngine{ Scheduler: &scheduler.QueuedScheduler{}, WorkerCount: , ItemChan: itemChan, RequestProcessor: engine.Worker, } e.Run(engine.Request{ Url: , Parser: engine.NewFuncParser( parser.ParseCityList, config.), }) }
然后再进到e.Run里面就能看到送数据的代码了。
00
相似问题
关于channel报错的问题请教
回答 2
关于队列实现调度器问题
回答 1