同fmt.Stringer类似,error类型是一个内建接口:
type error interface { Error() string }
与fmt.Stringer类似,fmt包在打印值时也会满足error
通常函数会返回一个error值,调用它的代码应该判断这个错误是否等于nil来进行错误处理
error 为 nil 时表示成功,非 nil 表示失败
package mainimport ("fmt""time")type MyError struct {When time.TimeWhat string}//还是利用了Stringer接口func (e *MyError) Error() string {return fmt.Sprintf("at %v, %s", e.When, e.What)}//test 方法 用来返回一个MyError的结构体func test() error {return &MyError{time.Now(),"it did not work",}}func main() {if err := test(); err != nil {fmt.Println(err)}//等价于error2 := test()if error2 != nil {fmt.Println(error2)}}
