Vérification de l'égalité pour l'interface{}
Dans Go, comparer les valeurs de l'interface{} peut être un peu délicat, en particulier lorsqu'il s'agit de structures personnalisées. . Cet article vise à faire la lumière sur cet aspect et à apporter une réponse concise et complète à la question suivante :
Comment vérifier efficacement l'égalité des valeurs de l'interface{}, en particulier dans les cas impliquant des valeurs définies par l'utilisateur structs ?
Interface{} Égalité
Tout d'abord, il est essentiel de comprendre que Les valeurs interface{} prennent en charge la comparaison d’égalité. Deux valeurs d'interface{} sont égales si elles ont des types dynamiques identiques et des valeurs dynamiques égales, ou si les deux ont une valeur nulle.
Structs et interfaces
Lors de la comparaison d'un struct à une valeur d'interface{}, l'égalité n'est vraie que si les valeurs du type de struct sont comparables et que la struct implémente l'interface. De plus, le type dynamique de la structure doit correspondre au type dynamique de l'interface et sa valeur dynamique doit être égale à la valeur dynamique de l'interface.
Exemple
Considérons un exemple pour illustrer ce comportement :
type MyStruct struct { Name string Age int } var v interface{} = MyStruct{Name: "John", Age: 30} var A = []interface{}{MyStruct{Name: "Alice", Age: 25}, MyStruct{Name: "Bob", Age: 35}} for i := 0; i < len(A); i++ { if A[i] == v { fmt.Println("Found") break } }
Dans ce scénario, la vérification de l'égalité entre A[i] et v réussira car les deux valeurs sont de tapez MyStruct avec des champs identiques.
Conclusion
La vérification de l'égalité dans Go devient gérable une fois que vous avez saisi les concepts d'égalité d'interface{} et la relation entre les structures et les interfaces. En comprenant ces principes, vous pouvez comparer efficacement les valeurs de l'interface{}, y compris les structures personnalisées, en toute confiance.
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!