go-learning/3methods/errors.go

35 lines
811 B
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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?