Maison >développement back-end >Golang >Comment fonctionnent les opérateurs d'égalité lors de la comparaison des valeurs `interface{}` dans Go ?

Comment fonctionnent les opérateurs d'égalité lors de la comparaison des valeurs `interface{}` dans Go ?

DDD
DDDoriginal
2024-12-03 13:28:09906parcourir

How Do Equality Operators Work When Comparing `interface{}` Values in Go?

Comparaison des valeurs de type Interface{}

Dans Go, comparer les valeurs de type interface{} est une opération courante. Cependant, cela peut prêter à confusion lors de la comparaison de types non triviaux, tels que les structures personnalisées.

Utilisation des opérateurs d'égalité

Pour comparer les valeurs de l'interface{}, les opérateurs d'égalité == et != sont employé. Ces opérateurs suivent des règles spécifiques définies dans la spécification du langage de programmation Go :

  • Les valeurs d'interface sont considérées comme égales si elles ont le même type dynamique et des valeurs dynamiques égales, ou si les deux ont une valeur nulle.
  • Pour les valeurs non-interface de type X et les valeurs d'interface de type T, où X implémente T, les valeurs sont comparables si X est comparable. Ils sont égaux si le type dynamique de la valeur de l'interface correspond à X et que sa valeur dynamique est égale à la valeur non-interface.

Comparaison des structures et des interfaces

Les structures jouent un rôle important dans les comparaisons de types. Selon la spécification :

  • Les valeurs de structure sont comparables si tous leurs champs non vides sont comparables.
  • Deux valeurs de structure sont égales si leurs champs non vides correspondants sont égaux.

Application en pratique

Considérez la tranche suivante de valeurs d'interface{} : []interface{}{1, "Bonjour", vrai}. Pour rechercher une valeur spécifique, telle que 1, on peut parcourir la tranche et comparer chaque élément à l'aide de l'opérateur d'égalité :

for i := 0; i < len(slice); i++ {
  if slice[i] == 1 {
    // Value found!
    break
  }
}

Conclusion

Comparaison des valeurs de l'interface{} tapez Go implique de comprendre les règles d'égalité définies dans la spécification du langage. En utilisant ces règles, les développeurs peuvent gérer en toute confiance les comparaisons entre les valeurs d'interface, y compris les types non triviaux tels que les structures personnalisées.

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