>  기사  >  백엔드 개발  >  Go에서 유형이 맵 키로 사용되는 것을 방지하는 방법은 무엇입니까?

Go에서 유형이 맵 키로 사용되는 것을 방지하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-28 02:28:31220검색

How to Prevent a Type from Being Used as a Map Key in Go?

유형을 맵 키로 사용 방지

문제: 유형을 맵 키로 사용하려고 하면 컴파일 시간 오류가 발생합니다. 전용 멤버가 포함된 유형입니다. 이 문제를 어떻게 해결할 수 있습니까?

답변:

특정 유형이 맵 키로 사용되는 것을 방지하는 것이 본질적으로 유익하지는 않지만 특정 상황이 있습니다. 그러한 조치가 필요한 것입니다. 언어 사양에 따라 맵 키는 특정 비교 규칙을 준수해야 합니다. 유형이 맵 키로 사용되는 것을 방지하는 두 가지 방법은 다음과 같습니다.

방법 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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