유형이 맵 키로 사용되는 것을 방지
일부 유형은 본질적으로 맵 키 역할을 할 수 있지만 개발자는 이를 방지하고 싶을 수도 있습니다. 용법. 민간 회원이 그러한 사건을 금지한다고 가정하더라도 이는 부적절합니다. 이 문서에서는 지도 키로 사용할 수 없는 유형을 렌더링하는 최선의 접근 방식을 살펴봅니다.
지도 키 유형 비교
지도 유형에 대한 기술 사양에 따르면 지도 유형은 다음을 수행할 수 있어야 합니다. == 및 != 연산자를 통한 비교. 이는 키 유형이 함수, 맵 또는 슬라이스가 아니어야 함을 의미합니다. 이 요구 사항을 활용하는 것이 맵 키 사용을 방지하는 열쇠가 됩니다.
비교할 수 없는 필드 소개
해당 필드로 정의된 구조체 값은 모든 필드가 비교할 수 있는 경우에만 비교할 수 있습니다. . 따라서 비교할 수 없는 유형의 필드를 도입하면 구조체가 맵 키 역할을 할 수 없게 됩니다. 편리한 옵션은 비교 불가능한 것으로 명시적으로 선언된 슬라이스 유형의 필드를 추가하는 것입니다.
코드 예
제공된 유형에 대해 다음 수정 사항을 고려하세요.
<code class="go">type MyType struct { A *A b b notComparable []int }</code>
notComparable 필드가 포함되어 MyType을 맵 키로 사용하려고 하면 컴파일 시간 오류가 발생합니다.
<code class="go">m := map[MyType]int{}</code>
컴파일 오류: "잘못된 맵 키 type MyType"
추가 고려 사항
유형에 대한 맵 키 사용을 제거하면 해당 값을 비교하는 옵션도 제거된다는 점에 주목할 가치가 있습니다. 비교할 수 없는 분야가 도입되었기 때문이다. 이 문제를 완화하기 위해 원래 유형에 대한 비교 가능성을 유지하면서 비교할 수 없는 필드를 숨기는 래퍼 유형을 도입할 수 있습니다.
위 내용은 다음은 기사의 다양한 측면을 강조하는 몇 가지 제목 옵션입니다. 문제에 집중: * Go에서 유형이 지도 키로 사용되는 것을 방지하는 방법은 무엇입니까? * MyStruct를 사용할 수 없는 이유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!