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.
Les valeurs d'interface sont comparables. Deux valeurs d'interface sont considérées comme égales si :
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.
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.
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!