go에서 오류 래핑을 시도하고 있으며 래핑된 사용자 정의 오류 유형을 반환하는 함수가 있습니다. 내가 원하는 것은 예상되는 오류 목록을 반복하고 함수의 출력에 예상되는 오류가 포함되어 있는지 테스트하는 것입니다.
[]error
意味着自定义错误的类型将为 *fmt.wraperror
,这意味着 errors.as()
에 사용자 정의 오류를 넣으면 거의 항상 true가 반환된다는 것을 발견했습니다.
예를 들어 다음 코드를 고려해보세요.
으아아아출력은
으아아아이상적으로는 출력이
이기를 바랍니다. 으아아아오류가 발생하는 이유는 각 테스트 사례 항목에 대해 예상되는 오류 목록을 정의할 수 있기 때문입니다. 함수에 특정 입력을 제공하면 함수가 경로를 따르고 특정 오류가 포함된 오류를 반환하게 된다는 것을 알고 있다고 가정해 보겠습니다.
어떻게 *fmt.wraperror
类型从 []error
切片转换回原始类型,以便我可以将其与 error.as
함께 사용하나요?
를 사용하여 특정 유형으로 변환할 수 있다는 것을 알고 있습니다. (anothererror)
, 하지만 슬라이스를 반복할 때 작동하게 하려면 함수가 반환할 수 있는 모든 가능한 오류에 대해 이 작업을 수행해야 합니다. 그렇지 않습니까? ) 将其强制转换为特定类型。(anothererror)
,但为了在迭代切片时使其工作,我必须对函数可能返回的每个可能的错误执行此操作,不是吗?)
您可以使用以下方法欺骗 errors.as
errors.as
다음을 사용하여
으아아아
errors.as
的是 *error
。因此,包装的错误值(即 err
)被直接分配给目标值。在我的示例中,传递给 errors.as
的值是 **anothererror
,并且 err
不能分配给 *anothererror
인쇄 유형이 예상한 것과 다르지만
*error
이기 때문입니다. 따라서 래핑된 오류 값(예: err
)이 대상 값에 직접 할당됩니다. 내 예에서 🎜에 전달된 값은 **anothererror
이고 err
는 *anothererror
에 할당할 수 없습니다. 🎜위 내용은 Golang의 구체적인 유형 오류 조각의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!