美文网首页
error优化处理

error优化处理

作者: 95加不满 | 来源:发表于2020-05-20 18:04 被阅读0次

1.重复的error检查代码改进

改进之前:

_, err = fd.Write(p0[a:b])
if err != nil {
    return err
}
_, err = fd.Write(p1[c:d])
if err != nil {
    return err
}
_, err = fd.Write(p2[e:f])
if err != nil {
    return err
}
// and so on

改进方案一:

var err error
write := func(buf []byte) {
    if err != nil {
        return
    }
    _, err = w.Write(buf)
}
write(p0[a:b])
write(p1[c:d])
write(p2[e:f])
// and so on
if err != nil {
    return err
}

改进方案二(推荐):

type errWriter struct {
    w   io.Writer
    err error
}

func (ew *errWriter) write(buf []byte) {
    if ew.err != nil {
        return
    }
    _, ew.err = ew.w.Write(buf)
}
ew := &errWriter{w: fd}
ew.write(p0[a:b])
ew.write(p1[c:d])
ew.write(p2[e:f])
// and so on
if ew.err != nil {
    return ew.err
}

【引用来源】[^官方]:
[^官方]:https://blog.golang.org/errors-are-values

相关文章

网友评论

      本文标题:error优化处理

      本文链接:https://www.haomeiwen.com/subject/gywnohtx.html