由于 golang 中接口的特殊性,所有实现了 Error() 方法的对象都可以,被赋值给 error 类型的变量,
所以实现起来就很简单,下面直接给出代码了, 这是我自己写的一个简单的demo
package main
import (
"fmt"
"strings"
)
type NameError struct {
name string
}
func (e *NameError) Error() string {
return e.name + " is not valid"
}
func NameToUpper(name string) (string, error) {
if name != "shanhuhai" {
return "", &NameError{name}
}
return strings.ToUpper(name), nil;
}
func main() {
name := "shanhuhai"
if upper , err := NameToUpper(name); err != nil {
fmt.Println(err)
} else {
fmt.Println(name + "'s upper case is " + upper )
}
}
转载请注明:大后端 » Golang 自定义错误