Maison > développement back-end > Golang > Comment puis-je comparer les valeurs `interface{}` pour l'égalité dans Go, en particulier avec les structures personnalisées ?

Comment puis-je comparer les valeurs `interface{}` pour l'égalité dans Go, en particulier avec les structures personnalisées ?

Linda Hamilton
Libérer: 2024-12-01 22:49:10
original
1018 Les gens l'ont consulté

How Can I Compare `interface{}` Values for Equality in Go, Especially with Custom Structs?

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
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal