소개
Go 제네릭을 탐색할 때 개발자는 어려움에 직면할 수 있습니다. >와 같은 순서 연산자를 활용하려고 할 때; 비교 가능한 제약 조건을 만족하는 유형을 허용하는 함수 내에서. 이 기사에서는 이러한 비호환성의 이유를 자세히 알아보고 잠재적인 해결책을 모색합니다.
비교 가능 제약 조건
Go 언어 사양에 정의된 비교 가능 제약 조건은 다음 유형에 적용됩니다. 동등 연산자(== 및 !=)를 지원합니다. 여기에는 비교 가능한 필드가 있는 배열 및 구조체를 비롯하여 맵 키로 활용할 수 있는 유형이 포함됩니다.
순서 연산자
Go 언어 사양에서는 "비교 연산자"라는 용어를 사용합니다. "항등 연산자와 순서 연산자를 모두 포함하기 위해 사양은 적용되는 유형을 명확하게 구분합니다. 특히 > 및 <
Comparable과의 비호환성
안타깝게도 비교 가능 제약 조건은 유형이 순서 연산자를 지원한다는 의미는 아닙니다. 이는 "잘못된 연산: t1 > t2를 비교할 수 없습니다(연산자 > T에 정의되지 않음)."
솔루션
Go 1.21 이상
Go 버전 1.21 이상에서는 개발자가 표준 라이브러리에 도입된 cmp.Ordered 유형 제약 조건을 활용할 수 있습니다. 이 제약 조건과 관련 함수인 Less 및 Compare는 순서가 지정된 유형에 대한 비교를 용이하게 합니다.Go 1.18~1.20
Go 버전 1.18~1.20의 경우 제약 조건은 .golang.org/x/exp 패키지의 Ordered 제약 조건은 순서와 관련된 비교에 활용될 수 있습니다. 연산자입니다.위 내용은 Go Generics의 '비교 가능' 제약 조건을 주문 연산자와 함께 사용할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!