Go语言引入了一个关于错误处理的标准模式,即error接口,该接口的定义如下:
type error interface {
Error() string
}
对于大多数函数,如果需要返回错误,大致上可以定义为这种模式:
func Test(param int) (n int, err error) {
// ...
}
//调用时的错误处理方法
n, err := Test(0)
if err != nil{
//处理err
} else {
//没有err
}
如果需要使用自定义的error类型:
//首先自定义一个类型
type MyError struct {
Op string
Err error
}
//然后实现error接口的Error()方法
func (e *MyError ) Error() string {
return e.Op + ": " + e.Err.Error()
}
//调用
fun Test(x int) (n int, e error){
//...
if e != nil {
return nil, &MyError{"op", e}
}
return 0,nil
}