>백엔드 개발 >Golang >Go에서 유형 별칭으로 변환할 때 유형 어설션이 실패하는 이유는 무엇입니까?

Go에서 유형 별칭으로 변환할 때 유형 어설션이 실패하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-22 18:35:11661검색

Why Does Type Assertion Fail When Casting to a Type Alias in Go?

Go에서 유형 별칭으로 캐스팅

문제:

예제 스니펫에서 첫 번째 유형 어설션은 함수 서명을 명시적으로 지정하여 성공합니다. 그러나 유형 별칭인 SomethingFuncy로 캐스팅을 시도하는 두 번째 어설션에서는 패닉이 발생합니다. 왜 그런가요? 더 긴 함수 시그니처로 캐스팅할 수 있는 방법이 있나요?

설명:

여기서 유형 캐스팅이 관련된다는 오해와는 반대로, Go는 유형 주장과 유형 변환만 제공합니다. 제공된 스니펫에 사용되는 유형 어설션에 초점이 맞춰져 있습니다.

유형 어설션과 변환의 주요 차이점은 비교에 사용되는 기준에 있습니다. int 및 MyInt를 사용한 예제와 같은 변환에서는 기본 유형이 고려됩니다. 그러나 유형 어설션의 경우 정확한 유형만 고려됩니다.

자세히 설명하자면 a가 int 유형인 예에서는 int가 MyInt와 동일하지 않기 때문에 어설션 a.(MyInt)가 실패합니다. 둘 다 동일한 기본 유형을 공유하더라도.

tl;dr:

유형 어설션 확인 정확한 유형 ID를 위해, 이는 SomethingFuncy와 같은 유형 별칭이 func(int) bool과 다르다는 것을 의미합니다. 따라서 두 번째 캐스트는 실패합니다.

보너스:

스니펫에서 유형 ID를 확인하는 데 사용된 코드는 참조용으로 제공되며 어설션과 관련된 직접 비교를 보여줍니다. 프로세스입니다.

위 내용은 Go에서 유형 별칭으로 변환할 때 유형 어설션이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.