异步监听多个错误

reaperhero · · 741 次点击 · · 开始浏览    

异步监听多个错误,等待他们完成并打印两个结果。此外,如果一个函数返回错误,我不想等待另一个函数,只是打印错误 ``` func test(i int) (int, error) { if i > 2 { return 0, errors.New("test error") } return i + 5, nil } func test2(i int) (int, error) { if i > 3 { return 0, errors.New("test2 error") } return i + 7, nil } func main() { results := make(chan int, 2) errors := make(chan error, 2) var wg sync.WaitGroup wg.Add(1) go func() { defer wg.Done() result, err := test(3) if err != nil { errors <- err return } results <- result }() wg.Add(1) go func() { defer wg.Done() result, err := test2(3) if err != nil { errors <- err return } results <- result }() go func() { wg.Wait() close(results) close(errors) }() for err := range errors { println(err.Error()) return } for res := range results { println("--------- ", res, " ------------") } } ```

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

741 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传