2012년 5월 1일 화요일

error

출처: http://tour.golang.org/#54


error 를 한번 더 보자.

error 는 error string 이다.


error 는 interface 이다.

     type error interface {
         Error() string
     }



즉, Error() string 이란 메서드만 구현되어 있으면,
 모두 error 기능을 수행할 수 있다고 본다.

즉, 아래 run() 함수가 리턴하는 error 타입은
위에서 정의된 Error() string 메서드를 구현한 객체를 리턴한다는 얘기가 된다.





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(), "작동실패."}
}


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






D:\DEV\PP\work_4\src>go run hello69.go
at 2012-05-01 11:09:15.2010718 +0000 UTC, 작동실패.