Order 演算子を使用して Go 構造体を比較できないのはなぜですか?

Linda Hamilton
リリース: 2024-11-08 12:58:02
オリジナル
375 人が閲覧しました

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

Go 構造体の比較 - Ordered と Comparable を理解する

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 では、構造体は比較可能ですが順序付けされません。 仕様では次のように明確にされています。

"順序付け演算子 <、<=、>、および >= は、次のオペランドに適用されます。 "

したがって、構造体は等しいかどうか比較できますが、上記の例に見られるように、>= のような演算子を使用して順序付けすることはできません。

以上がOrder 演算子を使用して Go 構造体を比較できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート