Go 프로그래밍 언어 사양에는 비교 가능한 필드로만 구성된 구조체가 비교 가능해야 한다고 명시되어 있습니다. 그러나 순서가 지정된 연산자를 사용하여 구조체를 비교하려고 하면 문제가 발생합니다.
다음 코드를 고려하세요.
package main type Student struct { Name string Score uint8 } func main() { alice := Student{"Alice", 98} carol := Student{"Carol", 72} if alice >= carol { println("Alice >= Carol") } else { println("Alice < Carol") } }
아마도 이 코드는 비교 가능한 필드로 인해 성공적으로 컴파일됩니다. 그러나 >= 연산자를 사용하여 구조체를 비교하려는 시도는 다음과 같이 실패합니다.
invalid operation: alice >= carol (operator >= not defined on struct)
Go에서 구조체는 비교할 수 있지만 순서가 지정되지는 않습니다. 사양에서는 다음과 같이 명시합니다.
"순서 연산자 <, <=, > 및 >=는 다음과 같은 피연산자에 적용됩니다. "
따라서 구조체가 동일한지 비교할 수는 있지만 위의 예에서 볼 수 있듯이 >=와 같은 연산자를 사용하여 정렬할 수는 없습니다.
위 내용은 주문 연산자를 사용하여 Go 구조체를 비교할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!