Maison > Article > développement back-end > Comment comparer les valeurs des types personnalisés dans Golang ?
Dans Golang, les valeurs des types personnalisés peuvent être comparées en utilisant directement l'opérateur == pour les types avec la même représentation sous-jacente. Pour les types plus complexes, utilisez la fonction reflex.DeepEqual pour comparer de manière récursive l’intégralité du contenu de deux valeurs.
Comparez les valeurs de types personnalisés dans Golang
Dans Golang, les types personnalisés sont des types de données définis par l'utilisateur qui peuvent être créés selon les besoins dans le programme. Lorsque vous travaillez avec des valeurs de types personnalisés, vous devez parfois les comparer pour vérifier leur égalité ou déterminer si elles sont égales. Cet article présentera comment comparer les valeurs des types personnalisés dans Golang et un cas pratique.
Utilisez l'opérateur ==
==
操作符
对于某些自定义类型,可以通过 ==
操作符方便地比较它们的值。当两个类型具有相同的底层表示形式时,可以使用 ==
操作符。例如,以下是如何比较两个 int
类型的值:
package main import "fmt" type MyInt int func main() { var a MyInt = 10 var b MyInt = 10 fmt.Println(a == b) // true }
使用 reflect.DeepEqual
函数
对于更复杂的自定义类型,不能直接使用 ==
操作符进行比较。在这种情况下,可以使用 reflect.DeepEqual
函数,该函数通过递归比较两个值的全部内容来确定它们是否相等。以下是如何使用 reflect.DeepEqual
函数比较两个 struct
类型的值:
package main import "fmt" import "reflect" type MyStruct struct { Name string Age int } func main() { var a = MyStruct{Name: "Alice", Age: 25} var b = MyStruct{Name: "Alice", Age: 25} fmt.Println(reflect.DeepEqual(a, b)) // true }
实战案例:比较用户结构体
让我们考虑一个实战案例,其中需要比较用户结构体。假设我们有一个 User
结构体,其中包含 Name
、Age
和 Email
字段。
type User struct { Name string Age int Email string }
现在,假设我们收到两个包含不同值的用户结构体实例。我们需要确定它们是否代表同一个人。我们可以使用 reflect.DeepEqual
函数来比较这些结构体:
func areUsersEqual(u1, u2 User) bool { return reflect.DeepEqual(u1, u2) }
然后,我们可以使用 areUsersEqual
==
. L'opérateur ==
peut être utilisé lorsque deux types ont la même représentation sous-jacente. Par exemple, voici comment comparer deux valeurs de type int
: 🎜func main() { u1 := User{Name: "John", Age: 30, Email: "john@example.com"} u2 := User{Name: "John", Age: 30, Email: "john@example.com"} if areUsersEqual(u1, u2) { fmt.Println("Users are equal.") } else { fmt.Println("Users are not equal.") }🎜🎜Utilisez la fonction
reflect.DeepEqual
🎜🎜🎜Pour les types personnalisés plus complexes, elle ne peut pas être utilisé directement avec l'opérateur ==
pour la comparaison. Dans ce cas, vous pouvez utiliser la fonction reflect.DeepEqual
, qui détermine si deux valeurs sont égales en comparant récursivement l'intégralité de leur contenu. Voici comment utiliser la fonction reflect.DeepEqual
pour comparer les valeurs de deux types struct
: 🎜rrreee🎜🎜Exemple pratique : comparaison des structures utilisateur🎜🎜🎜Considérons un exemple pratique case , qui doit comparer les structures des utilisateurs. Supposons que nous ayons une structure Utilisateur
avec les champs Nom
, Âge
et E-mail
. 🎜rrreee🎜Maintenant, disons que nous recevons deux instances de structure User contenant des valeurs différentes. Nous devons déterminer s’ils représentent la même personne. On peut utiliser la fonction reflect.DeepEqual
pour comparer ces structures : 🎜rrreee🎜 On peut ensuite utiliser la fonction areUsersEqual
pour déterminer si les utilisateurs sont égaux : 🎜rrreeeCe 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!