为了账号安全,请及时绑定邮箱和手机立即绑定

错误。在 Go 1.13 中

错误。在 Go 1.13 中

Go
牛魔王的故事 2023-07-31 15:52:37
Go 1.13 为错误引入了新功能,以简化错误处理。在 Go 1.13 之前,我通过以下方式检查代码是否有错误:if err == nil {    // ...}但 Goerrors.Is()帮助我正确地做到了这一点:这是一种明智的方法,可以让您的代码面向未来,并防止您(或您的代码导入的任何包)将来出现包装错误而引起问题。对于这样的情况来说这是可以的:if errors.Is(err, sql.ErrNoRows) {   // ...}这是否意味着我必须将所有err == nil陈述更改为:if errors.Is(err, nil) {    // ...}
查看完整描述

2 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

不,你不知道。error.Is 检查底层错误值。如果某些代码返回 sql.ErrNoRows 并且稍后决定包装该错误,则errors.Is(err, sql.ErrNoRows) 会像以前一样继续工作,但 err == sql.ErrNoRows 将计算为 false。

nil 错误值意味着没有错误,因此没有任何内容可以换行。您无法编写任何代码来更改 err != nil 的计算结果,同时仍然不返回任何错误。只有一种方法可以不返回错误:nil。


查看完整回答
反对 回复 2023-07-31
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

不,不需要。当错误与目标匹配时,我们使用errors.Is(),如果它等于目标,则返回true。在您的情况下 err 为零,不能与目标一起使用。



查看完整回答
反对 回复 2023-07-31
  • 2 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信