Link: https://play.golang.org/p/z50pUnAe4q
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)
}
}
I understand that the built in type error
looks like this,
type error interface {
Error() string
}
Meaning MyError
implements error
.
The run()
method returns a pointer to MyError
type.
But the return type of run()
method in the method signature is of type error
.
How does the return statement in run()
automatically call the Error()
method?