>백엔드 개발 >Golang >단위 테스트에서 Go 슬라이스와 NaN 요소를 비교하는 방법은 무엇입니까?

단위 테스트에서 Go 슬라이스와 NaN 요소를 비교하는 방법은 무엇입니까?

WBOY
WBOY앞으로
2024-02-12 13:00:091006검색

如何在单元测试中比较 Go 切片和 NaN 元素?

php editor Baicao Go 슬라이스와 NaN 요소를 비교하는 것은 단위 테스트에서 흔히 발생하는 문제입니다. 슬라이스를 다룰 때 두 슬라이스가 동일한지 비교해야 하는 경우가 많지만 슬라이스에 NaN 요소가 포함되어 있으면 비교가 복잡해집니다. NaN은 특수 부동 소수점 숫자입니다. 즉, 숫자 값이 아님을 의미합니다. Go에서는 수학 패키지의 IsNaN 함수를 사용하여 부동 소수점 숫자가 NaN인지 여부를 확인합니다. 슬라이스의 각 요소를 반복하고 IsNaN 함수를 사용하여 NaN인지 확인함으로써 슬라이스 비교 작업을 구현할 수 있습니다.

질문 내용

단위 테스트에서 2개의 슬라이스를 비교해야 합니다. assert 패키지가 이 문제를 해결해야 한다고 생각하지만 nan에서는 작동하지 않습니다.

으아아아

출력은 다음과 같습니다.

으아아아

nan의 속성 중 하나가 자기 자신과 동일하지 않다는 것을 알고 있지만, 반면에 함수에서 예상한 결과를 받습니다.

이 문제를 해결하는 방법을 알고 싶습니다. 간결한 단위 테스트 어설션과 명확한 출력을 얻으시겠습니까?

대안으로 assert 并在两个切片的每个元素上调用 math.isnan 사용을 피하고 두 슬라이스의 각 요소에 대해 math.isnan을 호출할 수 있지만 이는 단위 테스트에서 매우 장황해 보일 것입니다.

해결 방법

github.com/google/go-cmp/cmp 패키지를 사용하면 더욱 복잡한 비교가 가능합니다. cmpopts.equatenans를 사용하면 nan을 포함할 수 있는 데이터 구조를 쉽게 비교할 수 있습니다.

으아아아

위 내용은 단위 테스트에서 Go 슬라이스와 NaN 요소를 비교하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제