package main import ( "fmt" "time" ) func main() { fmt.Println("The error type is a built-in interface") fmt.Println("A nil error denotes success, a non-nil error denotes failure") if err := run(); err != nil { fmt.Println(err) } } 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(), "I'm an error!", } } // TODO soru1: `return *MyError` ve `func (e *MyError)` yapmak ne değiştirir. Diğer şekli ile pointer olmadan veriyi duplicate edip daha fazla mı yer kaplar? //TODO soru2: fmt'de String() kullanmazsak hata çıkarmıyordu, default bir değer vardı. Ama eğer Error() methodunu buradan silersek `func run() error` fonksiyonu hata veriyor? Neden?