err.(*MyErr) 또는 switch err.(type)과 같은 오류 타입 어설션 또는 타입 변환을 보고하고 대신 errors.As를 사용하도록 제안합니다.

Go 1.13부터 오류는 %w 동사가 포함된 fmt.Errorf 함수를 사용하여 래핑할 수 있습니다. 따라서 오류에 대한 타입 어설션 또는 타입 변환은 래핑된 오류에서 실패합니다. 표준 라이브러리의 errors.As 함수는 특정 오류 타입을 확인할 때 래핑된 오류의 체인을 자세히 살펴보기 때문에 특정 오류 타입을 확인할 때 권장됩니다.

errors.As에 관한 자세한 정보는 working with Errors in Go 1.13(Go 1.13에서 오류 수정)을 참조하세요.

빠른 수정에서는 오류 타입 어설션 및 타입 switch를 errors.As 호출로 대체합니다.

예시


errFoo, ok := err.(*ErrFoo)


switch err.(type) {
  case *ErrBar:
}

빠른 수정 적용 후:


var errFoo *ErrFoo
ok := errors.As(err, &errFoo)

var errBar *ErrBar
switch {
case errors.As(err, &errBar):
}