这两种写法的本质是相同的,都是判断 err 是否是 Error 类型的错误。但是它们的实现方式不同,具体区别如下:

if err == Error 这种写法是直接判断 err 是否等于 Error 类型的错误,它要求 err 的具体类型必须是 Error,如果 err 是该类型的子类型或实现了该类型的接口,则无法匹配成功。

if errors.Is(err, Error) 这种写法是利用 Go 1.13 引入的 errors.Is 函数判断 err 是否是 Error 类型的错误,它会遍历 err 的所有嵌套错误,直到找到一个与 Error 类型匹配的错误,因此它可以匹配 err 的所有子类型和实现了该类型的接口。

综上所述,使用 if errors.Is(err, Error) 更加灵活和健壮,能够匹配更多类型的错误。建议在实际开发中使用 if errors.Is(err, Error) 进行错误类型判断。

if err == Error 和 if errors.Is(err, Error) 有什么区别相关推荐

  1. err = Problems with launching via XPC. XPC error : Connection interrupted (0x00000005)

    err = Problems with launching via XPC. XPC error : Connection interrupted (0x00000005) 出现这个错误时候,看看Ed ...

  2. npm ERR missing script: server npm ERR npm ERR Did you mean this? npm ERR serve npm ERR A

    npm ERR! missing script: server npm ERR! npm ERR! Did you mean this? npm ERR! serve npm ERR! A compl ...

  3. go error接口与errors包详解

    文章目录 错误包需要具有哪些功能? 1. 应该能支持错误堆栈 2. 能够支持不同的打印格式 3. 能支持 Wrap/Unwrap 功能,也就是在已有的错误上,追加一些新的信息 4. 错误包应该有Is方 ...

  4. JNI:ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)

    1. 错误描述 ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors) What ...

  5. npm报错 npm ERR! Could not resolve dependency:npm ERR! peer pug@“^2.0.0“ from pug-loader@2.4.0

    npm报错 npm ERR! Could not resolve dependency:npm ERR! peer pug@"^2.0.0" from pug-loader@2.4 ...

  6. pm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: undefi

    文章目录 报错内容 解决方法 报错内容 npm i element-ui -S npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve n ...

  7. 由一条OpenResty Error log谈谈ngx.exit与ngx.eof的区别

    事由 我们基于Vanilla开发了一个类似于一个网关的流量分发服务,在原来的业务线上对不同的业务使用不同的后端(PHP.Python.Lua...)进行处理,最近在紧锣密鼓的测试(当然这里咱们主要看问 ...

  8. Conversion error:Jekyll::Converters::Scss encountered an error while converting css/main.scss

    错误描述:Conversion error: Jekyll::Converters::Scss encountered an error while converting 'css/main.scss ...

  9. localhost: Error: JAVA_HOME is not set. [Hadoop] Error: JAVA_HOME is not set

    localhost: Error: JAVA_HOME is not set. 在namenode启动脚本%Hadoop_HOME%/bin/start-dfs.sh的时候发现datanode报错: ...

最新文章

  1. 是时候扔掉Postman了,又一个被低估的IDEA插件出来了...
  2. 遇见BUG(4)不要默认电平标准!
  3. volatile 和 sig_atomic_tlinux
  4. Cowboy 源码分析(一)
  5. python 实现判断一个列表中的一个或多个元素是否存在于一个字符串中。
  6. Office 365 Outlook Web App 移动设备体验
  7. Python是非常优美的语言,那到底如何个美呢?
  8. 使用迁移学习在(选定)农业作物中的自动疾病分类
  9. 数组为什么可以使用linq查询
  10. 微软应用商店应用无法联网_微软,诺基亚应用商店-即将开业!
  11. 给小黑升级三星970EVOPlus固态硬盘手记(图文)
  12. 空间换时间和时间换空间
  13. 使用 kind 1 分钟启动一个本地 k8s 开发集群
  14. NMOS和PMOS管
  15. 单片机延时问题20问
  16. acl审计软件_审计软件有哪些-审计软件的总结分析
  17. 蚪侠-远程泛目录[泛域名+泛目录+泛内页]-[代码+汉字]干扰-字体繁简切换-蜘蛛欺骗-主动推送_镜像版-V25版
  18. 计算机组成与结构数据通路实验
  19. 随机过程(上):马尔可夫链
  20. 在应用中嵌入Python - lf8289的专栏 - CSDNBlog

热门文章

  1. 超简单的JS模仿QQ弹窗效果
  2. 现代化程序开发笔记(4)——包管理工具
  3. pycharm注释方法
  4. 【第139期】游戏策划:不用编程,制作捡钥匙开门功能
  5. php可视化布局拖拽,GitHub - hisiphp/Vue-Layout: 基于UI组件的Vue可视化布局工具 | Vue Visualization Layout Tool...
  6. 使用vb.net开发简单的socket通信
  7. vscode之python框架flask 断点调试的配置(官方推荐的配置,务必注意端口)
  8. 华为电视测试软件,华为智慧屏V65怎么样 华为智慧屏V65详细评测
  9. 4.7.2 在局域网上进行硬件多播
  10. 你从未见过的EditText属性详解