Maison  >  Article  >  développement back-end  >  Pourquoi ne pouvez-vous pas comparer les Go Structs à l’aide d’opérateurs de commande ?

Pourquoi ne pouvez-vous pas comparer les Go Structs à l’aide d’opérateurs de commande ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-08 12:58:02284parcourir

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

Comparaison Go Struct - Comprendre les champs ordonnés et comparables

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn