1
异步监听多个错误 - Go语言中文网 - Golang中文社区
source link: https://studygolang.com/articles/35659
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
异步监听多个错误
reaperhero · 3天之前 · 548 次点击 · 预计阅读时间 1 分钟 · 大约8小时之前 开始浏览异步监听多个错误,等待他们完成并打印两个结果。此外,如果一个函数返回错误,我不想等待另一个函数,只是打印错误
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, " ------------")
}
}
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK