1 回答

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
您正在打印頻道信息,而不是它包含的數(shù)據(jù)。你不想要一個(gè)循環(huán),你只想接收然后打印。
json := <-index
json.NewEncoder(os.Stdout).Encode(json)
現(xiàn)在我需要指出的是,該代碼不會(huì)阻塞。如果您想繼續(xù)閱讀直到所有工作完成,您需要某種鎖定/協(xié)調(diào)機(jī)制。
你會(huì)經(jīng)??吹筋?lèi)似的東西
for {
select {
case json := <-jsonChannel:
// do stuff
case <-abort:
// get out of here
}
}
去處理那個(gè)。此外,僅供參考,您正在使用默認(rèn)容量(意味著它是一個(gè)緩沖的頻道)初始化您的頻道,這很奇怪。我建議查看有關(guān)該主題的一些教程,因?yàn)榭傮w而言,您的設(shè)計(jì)需要一些工作,實(shí)際上是對(duì)非并發(fā)實(shí)現(xiàn)的改進(jìn)。最后,您可以找到一些庫(kù)來(lái)為您抽象這些工作,大多數(shù)人可能會(huì)建議您這樣做。這是一個(gè)例子;https://github.com/lytics/squaredance
- 1 回答
- 0 關(guān)注
- 173 瀏覽
添加回答
舉報(bào)