1 回答

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
您正在從封閉的渠道中閱讀,他們總是返回零值。您可以做的是在從通道讀取時(shí)使用逗號(hào) ok 習(xí)慣用法關(guān)閉選擇案例,然后將通道分配給 nil。如果另一個(gè)也為零,則返回。
case使用 nil 通道永遠(yuǎn)不會(huì)運(yùn)行。
只需擴(kuò)展您的代碼(與 的情況類似c2):
case r, ok := <-c1:
if !ok {
c1 = nil
if c2 == nil {
return
}
continue
}
if r.Error != nil {
fmt.Printf("error1: %v", r.Error)
return
}
fmt.Printf("Response1: %v\n", r.Response)
但我寧愿嘗試重構(gòu)整個(gè)實(shí)現(xiàn)。
您可以考慮使用sync.WaitGroup來(lái)自syncpkg 或errgroup.Group來(lái)自errgrouppkg.
- 1 回答
- 0 關(guān)注
- 132 瀏覽
添加回答
舉報(bào)