컨텍스트 : 단위 테스트를하고 예상 오류가 있는지 확인하려고했습니다. 내가 오류를 정확한에 비교되는 간단한 무언가를 시도하고 내가 비교가 반환 된 놀람이었다 있도록골란의 오류를 비교하는 방법
나는 예상 된 결과가 없었다 "거짓"
e1 := errors.New("error")
e2 := errors.New("error")
fmt.Println(e1 == e2) // false
실행 예 : https://play.golang.org/p/cvjjiJT_5T
누군가가 나를 설명 할 수있다 이것이 왜 false를 반환하는지과 오류 사이의 동등성을 올바르게 검사하는 방법은 무엇입니까?
errors.New는 값을 가리키는 포인터를 반환합니다. e1/e2는 다른 값에 대한 다른 포인터입니다. 평등성 테스트는 내부 값이 아닌 포인터 주소를 검사하기 때문에 반드시 거짓입니다. % # v 형식의 https://play.golang.org/p/Vu5kaBhh6y를 사용하여이를 볼 수 있습니다. 강력하게 형식화 된 오류를 사용하고 대신 어설 션을 입력하십시오. –