系統自身的error處理通常是 errors.New()或fmt.Errorf()等,對一些須要複雜顯示的,不太友好,咱們能夠擴展下error。json
error在標準庫中被定義爲一個接口類型,該接口只有一個Error()方法code
type error interface { Error() string }
那麼,自定義error只要擁有Error()方法,就實現了error接口,這裏咱們用結構體來擴展接口
package errors import ( "encoding/json" ) type Err struct { Code int Msg string } func (e *Err) Error() string { err, _ := json.Marshal(e) return string(err) } func New(code int, msg string) *Err { return &Err{ Code: code, Msg: msg, } }
func main(){ fmt.Println(errors.New(401,"無此權限")) }