La spécification du langage de programmation Go indique qu'une structure comprenant uniquement des champs comparables doit être comparable. Cependant, un problème survient lorsque l'on tente de comparer des structures à l'aide d'opérateurs ordonnés.
Considérez le code suivant :
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") } }
Il est prévu que ce code soit compilé avec succès en raison des champs comparables. Cependant, les tentatives de comparaison de structures à l'aide de l'opérateur >= échouent avec :
invalid operation: alice >= carol (operator >= not defined on struct)
Dans Go, les structures sont comparables mais non ordonnées. La spécification clarifie ceci :
"Les opérateurs de classement <, <=, > et >= s'appliquent aux opérandes ordonnés."
Par conséquent, même si les structures peuvent être comparées pour l'égalité, elles ne peuvent pas être ordonnées à l'aide d'opérateurs comme >=, comme le montre l'exemple ci-dessus.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!