系統自身的error處理一般是 errors.New()或fmt.Errorf()等,對一些需要複雜顯示的,不太友好,我們可以擴展下error。 error在標準庫中被定義為一個介面類型,該介面只有一個Error()方法 那麼,自定義error只要擁有Error()方法,就實現了error介面,這裡 ...
系統自身的error處理一般是 errors.New()或fmt.Errorf()等,對一些需要複雜顯示的,不太友好,我們可以擴展下error。
error在標準庫中被定義為一個介面類型,該介面只有一個Error()方法
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,"無此許可權"))
}