=` 그들의 분야가 언제 비교될 수 있나요? " />
Go 구조체 비교: 예기치 않은 오류
Go 프로그래밍 언어 사양에는 비교 가능한 필드만 있는 구조체도 비교 가능해야 한다고 명시되어 있습니다. 그러나 다음 코드는 실패합니다. 컴파일:
type Student struct { Name string // "String values are comparable and ordered, lexically byte-wise." Score uint8 // "Integer values are comparable and ordered, in the usual way." } func main() { alice := Student{"Alice", 98} carol := Student{"Carol", 72} if alice >= carol { println("Alice >= Carol") } else { println("Alice < Carol") } }
오류 메시지:
잘못됨 연산: alice >= carol(연산자 >= 구조체에 정의되지 않음)이 오류는 사양과 모순됩니다. 해당 필드가 있는 경우 구조체는 비교할 수 있어야 하기 때문입니다.
설명:
Student 구조체의 필드를 비교할 수 있지만(== 및 != 사용) 순서가 지정되지 않음. 순서 연산자(<, <=, >, >=)는 정수 또는 문자열과 같이 순서가 지정된 피연산자에만 사용할 수 있습니다.
Go 프로그래밍 언어 사양에는 다음과 같이 명시되어 있습니다. 구조체는 비교 가능하지만 순서가 지정되지 않습니다.
동등 연산자 == 및 !=는 비교 가능한 피연산자에 적용됩니다. <, <=, > 및 >=는 순서가 지정된 피연산자에 적용됩니다.
...
- 모든 필드가 비교 가능하면 구조체 값도 비교할 수 있습니다. 비어 있지 않은 해당 필드가 동일하면 두 구조체 값은 동일합니다.
따라서 해당 필드가 비교 가능하더라도 >=를 사용하여 Student 구조체를 비교할 수 없습니다.
위 내용은 해당 필드가 비교할 수 있는데 Go 구조체를 `>=`와 비교할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!