您现在的位置是:亿华云 > 知识
Go 语言怎么优化重复的 if err != nil 样板代码?
亿华云2025-10-09 03:23:18【知识】8人已围观
简介1.介绍Go 语言的错误处理在社区中一直被部分 Go 开发者诟病,其中重复的if err != nil样板代码是最令 Go 开发者难以忍受的,严重降低代码的可读性。针对这个社区争论非常激烈的话题,笔者
Go 语言的语言优化l样错误处理在社区中一直被部分 Go 开发者诟病,其中重复的重复 if err != nil 样板代码是最令 Go 开发者难以忍受的,严重降低代码的板代可读性。
针对这个社区争论非常激烈的语言优化l样话题,笔者介绍两种优化重复的重复 if err != nil 样板代码的方式。
错误检查函数示例代码:
func CheckErrors (err error) {
if err != nil {
// do 板代something
}
}调用错误检查函数示例代码:
err := SomeMethod()
CheckErrors(err)阅读上面这段代码,封装一个错误检查的语言优化l样函数,代码中需要处理错误的重复地方,直接调用该函数。板代
这种方式,亿华云语言优化l样虽然在视觉上提升了代码的重复可读性,但是板代在需要特殊处理错误的场景也有局限性,比如需要使用额外的语言优化l样信息完善错误时,该方式并不适用此类场景。重复
3.结构体中定义错误信息字段我们可以在结构体中定义错误信息字段,板代将结构体的方法与错误信息绑定在一起。
示例代码:
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 样板代码的重复出现。
4.总结本文我们介绍怎么优化 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
很赞哦!(286)
相关文章
- 这个不用多说,不同平台的注册价格不同,且不同平台对域名释放交易的把控与曝光不同,当然价格相对便宜且平台渠道广操作便利的平台最好。
- 开发人员不喜欢低代码和无代码的八个理由
- PulseAudio 和 Systemd 作者离开红帽,加入了微软
- 如何在Ubuntu 18.04上安装和配置Redis
- 3、不明先知,根据相关征兆预测可能发生的事件,以便提前做好准备,赶紧注册相关域名。;不差钱域名;buchaqian抢先注册,就是这种敏感类型。预言是最敏感的状态。其次,你应该有眼力。所谓眼力,就是善于从社会上时不时出现的各种热点事件中获取与事件相关的域名资源。眼力的前提是对域名领域的熟悉和丰富的知识。
- 域名被微信拦截的有效方法是什么?
- 我用Python处理3万多条数据,只要几秒钟……
- 腾讯云数据库Redis助力百万企业远程办公
- 要如何了解反向解析和域名解析?新手该怎么去操作?
- MySQL:第一次看到有人把MySQL主从复制讲解的这么清楚