将元素留在频道中是不好的做法?

时间:2018-05-24 01:09:25

标签: go channel

这是否会导致内存泄漏或其他类型的问题?

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..
    }
}

如果代码可能有问题,我会开始玩它。

奖金问题:是否有必要在上下文中关闭频道?

0 个答案:

没有答案