fmt.Errorf("%s must be foo, got %s", bar, baz)
와 같은 에러를 만들고 있는 경우, string 값을 비교하지 않고 동일한지 테스트(test equality)할 수 있는 방법이 있는가?
StatusTeapot
을 반환하는 서버를 만들고, 해당 URL을 DumbGetter
의 인자로 사용하여 200
이외의 응답을 올바르게 처리할 수 있는 지 확인한다.나는 이 코드를 어떻게 사용하고 싶은가?
DumbGetter
에 할 수 있는 것은, 타입 시스템을 이용해 사용자로 하여금 발생한 에러의 종류를 이해하는 방법을 제공하는 것이다.DumbGetter
가 다음과 같은 타입을 반환한다면 어떨까?BadStatusError
가 에러 인터페이스를 구현하도록 만들어야 한다.BadStatusError
인지 확인한다. 이는 에러의 종류를 분명하게 하고자 하는 염원을 반영하고 있다. assertion이 통과되었다고 가정하면, 에러의 프로퍼티(property)가 올바른지 확인할 수 있다.DumbGetter
을 고치자.DumbGetter
함수가 보다 단순해졌다. 에러 문자열의 복잡함과 관련 없어지고, BadStatusError
를 만들 뿐이다.error
이기 때문에, 사용자가 원한다면 다른 error
처럼 콜 스택에 쌓거나, 로그로 기록할 수 있다.