Go 는 내장 타입으로 error 라는 interface 타입을 갖는다.
type error interface {
Error() string
}
go 함수가 결과와 에러를 함께 리턴한다면, 그 에러가 nil 인지를 판단하여 에러를 체크할 수 있다.
nil이면 에러가 없는 것이고, nil이 아니면 에러를 알 수 있다.
log.Fatal()은 메시지를 출력하고 os.Exit(1)을 호출하여 프로그램을 종료한다.
또 다른 에러처리 방식으로 error의 type을 체크하여 타입별로 에러 처리를 하는 방식이 있다.
이 방식은 switch문을 활용하여 변수명.(type)의 방식으로 에러 타입을 체크한다.
go 에서 defer 키워드는 특정 문장 혹은 함수를 나중에 실행하게 한다. (defer를 호출하는 함수가 리턴하기 직전)
go 내장함수인 panic() 함수는 현재 함수를 즉시 멈추고 현재 함수에 있는 defer 함수들을 모두 실행한 뒤 리턴한다.
이러한 panic 함수의 실행 방식은 다시 상위함수에도 똑같이 적용된다.
그리고 마지막에는 프로그램이 에러를 내고 종료하게 된다.
go 내장함수인 recover() 함수는 panic 함수에 의한 패닉상태를 다시 정상화하는 함수이다.
recover 함수를 사용하면 panic 상태를 제거한다.