>  기사  >  백엔드 개발  >  주문 연산자를 사용하여 Go 구조체를 비교할 수 없는 이유는 무엇입니까?

주문 연산자를 사용하여 Go 구조체를 비교할 수 없는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-08 12:58:02284검색

Why Can't You Compare Go Structs Using Order Operators?

Go 구조체 비교 - 순서와 비교 가능 이해

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

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