문제: 유형을 맵 키로 사용하려고 하면 컴파일 시간 오류가 발생합니다. 전용 멤버가 포함된 유형입니다. 이 문제를 어떻게 해결할 수 있습니까?
답변:
특정 유형이 맵 키로 사용되는 것을 방지하는 것이 본질적으로 유익하지는 않지만 특정 상황이 있습니다. 그러한 조치가 필요한 것입니다. 언어 사양에 따라 맵 키는 특정 비교 규칙을 준수해야 합니다. 유형이 맵 키로 사용되는 것을 방지하는 두 가지 방법은 다음과 같습니다.
방법 1: 비교할 수 없는 필드 삽입
가장 간단한 해결책은 필드를 삽입하는 것입니다. 슬라이스, 맵 또는 함수와 같이 비교할 수 없는 유형의 유형 내에서. 이는 맵 키에 대한 비교 연산자 요구 사항을 위반하여 유형이 부적합하게 렌더링됩니다. 예:
<code class="go">type MyType struct { S string i int notComparable []int }</code>
방법 2: 래퍼 유형 사용
또는 원본 유형을 포함하고 비교할 수 없는 유형을 추가하는 래퍼 유형을 생성할 수 있습니다. 필드. 이 래퍼 유형은 원래 유형이 비교 가능성을 유지하면서 다른 곳에서 사용될 수 있습니다. 예를 들면 다음과 같습니다.
<code class="go">type myType struct { S string i int } type MyType struct { myType notComparable []int }</code>
참고:
맵 키로 유형 사용을 방지하는 잠재적인 영향을 고려하는 것이 중요합니다. Embedd Non-Comparable Field 방식의 경우, 비교 불가능한 필드를 도입하는데, 이는 해당 유형과 관련된 비교 작업에 파급 효과를 줄 수 있습니다.
위 내용은 Go에서 유형이 맵 키로 사용되는 것을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!