11. 에러 (error)

: 에러 문장(string)으로 자신을 표현할 수 있는 것은 모두 에러이다. 이 아이디어는 문자열(string)을 반환하는 하나의 메소드 Error로 구성된 내장 인터페이스 타입 error에서 나왔다.

type error interface{
    Error() string
}

fmt 패키지의 다양한 출력 루틴들은 error의 출력을 요청 받을때 자동으로 이 메소드를 호출 한다.

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 { //1. error 인터페이스로 MyError의 리시버 메소드를 리턴하게 되면.
    return &MyError{ time.Now(), "it didn't work", }
}

func main() {
    if err := run(); err != nil {
        fmt.Println(err) //2. fmt패키지는 error인터페이스를 받아서, 자동으로 Error메소드를 실행한다.
    }
}

results matching ""

    No results matching ""