在开发过程中, 标准库返回的error内容已经无法满足我们的需要时,发现builtin.go中error是一个interface,
type error interface {
    Error() string
}
所以只需要创建一个包含Error() string函数的结构体即可。
 
1.在go path下新建errors包
vim $GOPATH/github.com/mypractise/error/errors.go

package errors
type Error struct {
ErrCode int
ErrMsg string
}
func NewError(code int, msg string) *Error {
return &Error{ErrCode: code, ErrMsg: msg}
}
func (err *Error) Error() string {
return err.ErrMsg
}
 
2.开始调用errors包
vim ./test.go

package main
import (
"encoding/json"
"errors"
"fmt"
myerr "github.com/mypractise/errors"
)
func myErr() error {
err := myerr.NewError(2, "err test")
return err
}
func staErr() error {
m := make(map[string]string)
err := json.Unmarshal([]byte(""), m)
if err != nil {
return err
}
return errors.New("aaaaa")
}
func main() {
err1 := staErr()
fmt.Println("------sta err:", err1.Error())
err2 := myErr()
fmt.Println("------my err:", err2.Error(), err2.(*myerr.Error).ErrCode)
}
go run ./test.go

golang自定义返回error的更多相关文章

  1. Golang中的error类型

    Golang中的error类型 error类型本身就是一个预定义好的接口,里面定义了一个method type error interface { Error() string } 生成一个新的err ...

  2. iOS 自定义返回按钮,保留系统滑动返回

    原文链接 自定义返回按钮保留系统滑动返回手势.gif 1.简介 使用苹果手机,最喜欢的就是用它的滑动返回.作为一个开发者,我们在编写很多页面的时候,总是会因为这样那样的原因使得系统的滑动返回不可用.使 ...

  3. Ionic实现自定义返回按键事件

    在 Android 和 Window 平台下,有时候我们需要监听返回按键的事件来进行相应的操作,也就是自定义返回按键事件.下面根据一个例子来讲解如何在 ionic 中自定义返回按键事件. 功能需求 首 ...

  4. golang 自定义importpath

    golang 的包导入和其他语言有好多不一样的地方,以下是一个自定义的导入 golang 自定义导入说明 一个官方的说明 比较简单,就不翻译了,主要是说我们可以通过添加meta 数据告诉包如何进行加载 ...

  5. 详细讲解:tp3.2.3生成验证码并进行验证(ajax校验返回及自定义返回)

    TP3.2.3的验证码也是比较经典的小功能,框架对这个小功能的封装还是比较完美的,废话不多说,开始记录 1.总体效果: (1)初始界面 (2)自定义的返回校验效果: (3)ajax的校验返回: 2.代 ...

  6. Django模板导入及母版继承和自定义返回Html片段

    1.ROOT_URLCONF = '总路由所在路径(比如untitled.urls)'<===默认情况是这样 根路由的路径是可以修改的:ROOT_URLCONF = app01.urls< ...

  7. (转)移动端自定义返回上一页的方法:history

    在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面或执行一些其它操作的需求. 那在代码中怎样监听当点击微信.支付宝.百度糯米.百度钱包 ...

  8. 百度定位SDK 返回error code : 162 latitude : 4.9E-324 lontitude : 4.9E-324

    Android应用使用百度定位SDK 返回error code : 162 latitude : 4.9E-324 lontitude : 4.9E-324 在使用百度定位SDK时遇到一个非常郁闷的问 ...

  9. flutter 隐藏返回按钮 自定义返回按钮

    自定义返回按钮 //改变颜色 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( leading: BackBu ...

随机推荐

  1. web实现QQ第三方登录 开放平台-web实现QQ第三方登录

    应用场景     web应用通过QQ登录授权实现第三方登录.   操作步骤     1  注册成为QQ互联平台开发者,http://connect.qq.com/     2  准备一个可访问的域名, ...

  2. mysql 查询昨天,今天、七天、30天的数据

    主要是时间戳转"1993-01-01 00:00:00"的时间格式,然后和当前时间比对CURDATE() 如果字段本身符合正常时间格式,则直接使用即可 今天的数据 SELECT * ...

  3. mysql 数据表的引擎 MyISAM 和 InnoDB

    需要使用锁和事务时,必须使用InnoDB模式 可以通过以下语句查看表的类型 SHOW TABLE STATUS FROM [DATABASE_NAME] 修改数据表的引擎类型: navicat: 设计 ...

  4. javascript array操作

    首先来看一下怎么判断一个对象是不是数组: 1.Array.isArray(obj) 调用数组的isArray方法 2.obj instanceof Array 判断对象是否是Array的实例 3.Ob ...

  5. [转]WCF类型共享技巧

    调用过WCF服务的同学可能都会遇到这样的问题,同一个实体类型,不同的服务Visual Studio生成了不同的版本,例如Service1.User和Service2.User,对于C#来说,这是两个不 ...

  6. [QT] 小知识集锦

    qt 中关于 QWidget 的背景颜色和背景图片的设置 首先设置autoFillBackground 属性为真 然后定义一个QPalette 对象 设置QPalette 对象的背景属性(颜色或图片) ...

  7. VS中批量删除注释

    批量删除: 按ctrl+H 选上正则表达式 Find what: //.* Replace with: (空) 点replace all就行了

  8. Mogondb笔记

    创建数据库 use dbname 创建数据表(集合) db.createCollection("tablename") 给表添加记录 db.tablename.insert({na ...

  9. electron 的中文文档的地址 以及 窗口改变的步骤

    electron的中文文档的地址: http://www.kancloud.cn/wizardforcel/electron-doc/137791 1.如何创建窗口和改变窗口: import { Br ...

  10. Eclipse打开javadoc框

    Window->Show View->Other->Java->Javadoc 这样你用鼠标选中一个element就可以在Javadoc tag中显示信息了,而不是那种浮动窗口 ...