这是否会导致内存泄漏或其他类型的问题?
func example() err {
var wg sync.WaitGroup
wg.Add(2)
errorChannel := make(chan error, 2) // can hold two
go func() {
defer wg.Done()
var err error = doThing1()
if err != nil {
errorChannel <- err
}
}()
go func() {
defer wg.Done()
var err error = doThing2()
if err != nil {
errorChannel <- err
}
}()
wg.Wait()
close(errorChannel)
err := <-errorChannel
if err != nil {
return err // with returing the first error is enought..
}
}
如果代码可能有问题,我会开始玩它。
奖金问题:是否有必要在上下文中关闭频道?