在代码中显式的检查错误,而非忽略错误。
package main
import "fmt"
// 错误error是一个接口
//type error interface {
// Error() string
//}
// 自定义一些我们的错误,统一返回结果,处理全局返回的,ERR
type R struct {
msg string
code int
//可以定义多个参数,方便排错
data []string
}
// 后面自己去定义一些用户相关操作这边接受的都是一个指针对象
// func (调用者) Error(参数) 返回值
func (r *R) Error() string {
//return ""
return fmt.Sprintf("错误信息:%s, 代码:%d\n", r.msg, r.code)
}
// 错误自己的方法,提高操作效率
func (r *R) ok() string {
return "success"
}
// error的使用,如果函数或方法中有预期的错误,都需要抛出
func testErr(i int) (int, error) {
//这里可以是一种错误,如订单错误
if i != 0 {
return 0, &R{"错误数据", 500, nil}
}
return i, nil
}
func main() {
//假设这个方法返回了多个错误
i, err := testErr(1)
if err != nil {
fmt.Println(err)
//用断言判断是不是自己构造的错误类型
e, ok := err.(*R)
if ok {
fmt.Println(e.msg)
fmt.Println(e.code)
//可以返回给前端的接口
}
}
fmt.Println(i)
}