针对这个社区争论非常激烈的话题,笔者介绍两种优化重复的 if err != nil 样板代码的方式。
成都创新互联公司专业为企业提供黑河网站建设、黑河做网站、黑河网站设计、黑河网站制作等企业网站建设、网页设计与制作、黑河企业网站模板建站服务,10多年黑河做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
错误检查函数示例代码:
func CheckErrors (err error) {
if err != nil {
// do something
}
}
调用错误检查函数示例代码:
err := SomeMethod()
CheckErrors(err)
阅读上面这段代码,封装一个错误检查的函数,代码中需要处理错误的地方,直接调用该函数。
这种方式,虽然在视觉上提升了代码的可读性,但是在需要特殊处理错误的场景也有局限性,比如需要使用额外的信息完善错误时,该方式并不适用此类场景。
我们可以在结构体中定义错误信息字段,将结构体的方法与错误信息绑定在一起。
示例代码:
type Writer struct {
err error
buf []byte
n int
wr io.Writer
}
func (b *Writer) Flush() error {
if b.err != nil {
return b.err
}
// ...
return nil
}
阅读 Go 标准库 bufio 的代码片段,我们可以发现在 Writer 结构体中定义一个 err 字段,将错误信息封装在结构体中。
在 Writer 结构体的方法的开头先判断 err 字段是否为 nil,如果 err 字段的值不是 nil,则直接返回 err,从而减少 if err != nil 样板代码的重复出现。
本文我们介绍怎么优化 Go 语言中重复的 if err != nil 样板代码的两种方式,笔者推荐使用第二种方式,因为第一种方式虽然简单,但是在一些特定场景并不适合。
通过在结构体中定义错误信息的字段,将结构体的方法和错误信息绑定在一起的优化方式,相比较第一种方式更加优雅。
https://www.reddit.com/r/golang/comments/6v07ij/copypasting_if_err_nil_return_err_everywhere/
https://www.reddit.com/r/golang/comments/649o0c/syncx_go_library_that_extends_standard_sync/
https://go.dev/blog/errors-are-values
https://pkg.go.dev/golang.org/x/sync/errgroup
https://pkg.go.dev/github.com/facebookgo/stackerr#section-readme
分享文章:Go语言怎么优化重复的iferr!=nil样板代码?
链接地址:http://www.csdahua.cn/qtweb/news10/404210.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网