Maison >développement back-end >Golang >Comment va-t-il comparer les valeurs de l'interface {}, y compris les structures ?

Comment va-t-il comparer les valeurs de l'interface {}, y compris les structures ?

DDD
DDDoriginal
2024-12-03 10:34:11519parcourir

How Does Go Compare Interface{} Values, Including Structs?

Comparaison des valeurs d'interface{}

Dans Go, les opérateurs d'égalité (== et !=) peuvent être utilisés pour comparer les valeurs d'interface{}. Cependant, étant donné que les valeurs d'interface{} peuvent contenir des valeurs de différents types, il est important de comprendre comment ces valeurs sont comparées.

Égalité des valeurs d'interface

Les valeurs d'interface sont comparables. Deux valeurs d'interface sont considérées comme égales si :

  • Elles ont des types dynamiques identiques et des valeurs dynamiques égales, ou
  • Les deux ont une valeur nulle.

Égalité des valeurs d'interface avec les structures

Dans le cas où les valeurs d'interface{} contiennent des valeurs de structure personnalisées, les règles de comparaison de Go s'appliquent. Les valeurs de structure sont considérées comme comparables si tous leurs champs sont comparables. Deux valeurs de structure sont considérées comme égales si leurs champs non vides ont des valeurs égales.

Exemple de code

Considérez l'extrait de code suivant :

type MyStruct struct {
    Field1 int
    Field2 string
}

var A = []interface{}{}
v := MyStruct{1, "Test"}

for _, i := range A {
    if i == v {
        fmt.Println("Gotcha!")
        break
    }
}

Dans cet exemple, le L'opérateur == est utilisé pour comparer une valeur d'interface{} (v) avec des valeurs dans une tranche d'interface{} (A). Puisque les valeurs MyStruct sont comparables, la comparaison retournera vrai si les champs correspondants dans v et les éléments dans A sont égaux.

Conclusion

En comprenant les règles d'égalité de Go pour les valeurs et les structures de l'interface{} , les développeurs peuvent comparer ces valeurs en toute confiance dans leur code. Le système clair et flexible de Go garantit que les contrôles d'égalité fonctionnent comme prévu, quels que soient les types de données sous-jacents.

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