error接口

实现error接口的结构体

结构体 MyError 实现了 Error 方法,fmt.Println 会判断它实现了error 接口, 调用它的Error 方法

实现

package main

import (
	"fmt"
	"time"
)

type MyError struct {
	When time.Time
	What string
}

func (e *MyError) Error() string {
	return fmt.Sprintf("at %v, %s",
		e.When, e.What)
}

func run() error {
	return &MyError{
		time.Now(),
		"it didn't work",
	}
}

func main() {
	if err := run(); err != nil {
		fmt.Println(err)
	}
}

运行结果

at 2017-10-02 18:44:42.527726 +0800 CST, it didn't work