사용자 정의 키와 사용자 정의 동등성을 사용하는 Go 맵
사용자 정의 키를 사용하여 Go 맵을 구현하려면 특정 동등 규칙을 준수해야 합니다. 불행하게도 Go에 내장된 동등 연산은 맵 키에 맞게 사용자 정의할 수 없습니다. 그러나 효과적인 해결 방법이 있습니다.
구조체 인스턴스를 키로 직접 사용하는 대신, 고유 키 역할을 할 수 있고 원하는 동등 의미 체계에 맞는 고유 속성을 파생하는 것을 고려해 보세요. 예를 들어, 인스턴스의 ID를 나타내는 정수 또는 문자열 값을 파생시킬 수 있습니다.
해당 값이 실제 의미론적 ID를 나타낼 때만 키 충돌이 발생하도록 하는 것이 중요합니다. 이렇게 하면 교환 가능한 값이 올바르게 매핑됩니다.
예:
type Key struct { a *int } func (k *Key) HashKey() int { return *(*k).a } k1, k2 := Key{intPtr(1)}, Key{intPtr(2)} m := map[int]string{} m[k1.HashKey()] = "one" m[k2.HashKey()] = "two" // m = map[int]string{1:"one", 2:"two"} m[k1.HashKey()] // -> "one"
이 접근 방식에는 변경할 수 없는 키가 필요하다는 점을 기억하세요. 위 예에서 필드를 수정하면 키의 ID가 무효화되어 해시 키로 적합하지 않게 됩니다.
위 내용은 Go Maps에서 사용자 정의 구조체를 키로 어떻게 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!