前言

在 Go 中如果声明了两个字符相同的错误,但命名是新的变量,此时两个错误不相等

package main

import (
"errors"
"fmt"
) var err1 = errors.New("not found")
var err2 = errors.New("not found") func main() { fmt.Println(err1)
fmt.Println(err2) if err1 == err2 {
fmt.Println("这两个错误相同")
} else {
fmt.Println("这两个错误不相同")
}
}

输出

not found
not found
这两个错误不相同

那么如何比较两个这两个错误呢?这个应用场景在于不同包定义了相同的错误,这时候想要进行错误对比

解答

error 实现了 error 接口,所以我们可以使用 err.Error() 方法来转换 string,进行对比字符串值

type error interface {
Error() string
}
package main

import (
"errors"
"fmt"
) var err1 = errors.New("not found")
var err2 = errors.New("not found") func main() { fmt.Println(err1.Error())
fmt.Println(err2.Error()) if err1.Error() == err2.Error() {
fmt.Println("这两个错误相同")
} else {
fmt.Println("这两个错误不相同")
}
}

输出

not found
not found
这两个错误相同

go errors转string的更多相关文章

  1. 5-13 Rspec实际; validates处理Errors, TDD, 单元测试和验收测试,capybara

    validates处理验证错误:详见ActiveModel::Errors文档 一,errors ActiveModel::Errors的实例包含所有的❌.每个错误:key是每个属性的name, va ...

  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出

    系列目录 昨天文章太过仓促没有补充导出的示例源码,在者当时弄到到很晚没时间做出导出功能,对阅读理解造成影响,现补充一份示例源码,顺便补充导出的功能说明,望理解 示例代码下载   https://yun ...

  3. 已经重写,源码和文章请跳转http://www.cnblogs.com/ymnets/p/5621706.html

    文章由于写得比较仓促 已经重写,源码和文章请跳转 http://www.cnblogs.com/ymnets/p/5621706.html 系列目录 前言: 导入导出实在多例子,很多成熟的组建都分装了 ...

  4. PB函数大全

    PB函数大全 Abs()功能计算绝对值.语法Abs ( n )参数n:要得到绝对值的数值型变量或表达式返回值返回值的数据类型与n的数据类型相同,函数执行成功时返回n的绝对值.如果参数n的值为NULL, ...

  5. 扩展 ASP.NET MVC 模型扩展 – ASP.NET MVC 4 系列

           大部分人不能将核心运行时(System.Web 中的类)和 ASP.NET Web Forms 应用程序平台(System.Web.UI 中的类)区分开来.        ASP.NET ...

  6. .NET中的动态编译

    代码的动态编译并执行是一个.NET平台提供给我们的很强大的工具用以灵活扩展(当然是面对内部开发人员)复杂而无法估算的逻辑,并通过一些额外的代码来扩展我们已有 的应用程序.这在很大程度上给我们提供了另外 ...

  7. C#动态webservice调用接口 (JAVA,C#)

    C#动态webservice调用接口 using System; using System.Collections; using System.IO; using System.Net; using ...

  8. C++智能指针简单剖析

    导读 最近在补看<C++ Primer Plus>第六版,这的确是本好书,其中关于智能指针的章节解析的非常清晰,一解我以前的多处困惑.C++面试过程中,很多面试官都喜欢问智能指针相关的问题 ...

  9. Go语言的编程范式

    由于比较古怪的语言特性,感觉代码的封装性是一种不同的思路. 包管理的火热程度居然没有nodejs高,这是为什么 package form import ( "encoding/gob&quo ...

  10. 【ASP.NET Identity系列教程(二)】运用ASP.NET Identity

    注:本文是[ASP.NET Identity系列教程]的第二篇.本系列教程详细.完整.深入地介绍了微软的ASP.NET Identity技术,描述了如何运用ASP.NET Identity实现应用程序 ...

随机推荐

  1. JVM实战—1.Java代码的运行原理

    大纲 1.Java代码到底是如何运行起来的 2.JVM类加载机制的一系列概念 3.JVM中有哪些内存区域及各自的作用 4.JVM的垃圾回收机制的作用 5.问题汇总 1.Java代码到底是如何运行起来的 ...

  2. modbus调试助手/mqtt调试工具/超轻巧物联网组件/多线程实时采集/各种协议支持

    一.前言说明 搞物联网开发很多年,用的最多的当属modbus协议,一个稳定好用的物联网组件是物联网平台持续运行多年的基石,所以这个物联网组件从一开始就定位于自研,为了满足各种场景的需求,当然最重要的一 ...

  3. 学习破解一个Android程序

    首先编写一个android测试程序 功能:校验用户名和注册码,成功则弹出注册成功提示 以下仅给出关键部分的代码 res/layout/activity_main.xml <?xml versio ...

  4. [转]Linux系统下的GCC编译过程、使用命令详解(多文件编译、动态库、静态库)

    Linux系统下的GCC编译过程.使用命令详解(多文件编译.动态库.静态库) [Linux]gcc简介+编译过程 翻译 搜索 复制

  5. 即时通讯技术文集(第34期):IM群聊技术合集(Part1) [共15篇]

    为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第34 期. [- 1 -] 快速裂变:见证微信强大后台架构从0到1的演进历程(一) [链接]  ...

  6. vue基础3

    1.watch 案例:百度搜索框 注释的是用watch实现的 然后这个我用的是oninput事件 a.深浅监听 浅监听 深监听(不建议使用) 2.过滤器 全局: Vue.fliter('过滤器名字', ...

  7. Solution Set -“似一捧细泉的奔逃”

    目录 0.「OurOJ #47912」优美的分配方案 1.「OurOJ #47927」海之女仆 2.「OurOJ #47950」中档题 3.「OurOJ #47933」坐标 4.「OurOJ #479 ...

  8. WPF 查找大小相同文件/图片

    假设文件大小一样就表示文件一模一样,是重复文件 using System; using System.Collections.Generic; using System.Linq; using Sys ...

  9. mac系统如何安装nacos

    一:安装步骤1.先到nacos官网nacos.iohttp://nacos.io/ 2.点击开源版(进去下拉文档,找到 latest stable release 点进去) 3.点击下载zip文件到本 ...

  10. VS中无法识别unistd.h的问题

    问题 VS 无法打开源文件 unistd.h 参考:链接 方法 许多在Linux下开发的C程序都需要头文件unistd.h,但VC中没有个头文件,所以用VC编译总是报错.把下面的内容保存为unistd ...