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 サイトの他の関連記事を参照してください。