Comment comparer des fonctions dans Go
Introduction
Dans Go, les fonctions peuvent être référencées par variables et passés en arguments à d’autres fonctions. Cependant, il est important de noter que les fonctions de Go ne sont pas directement comparables. Cela signifie que vous ne pouvez pas utiliser les opérateurs de comparaison standard (==, !=, etc.) pour déterminer si deux fonctions sont égales.
Méthode de comparaison correcte
La la seule façon de comparer avec précision deux fonctions est de comparer leurs adresses. En effet, l'adresse d'une fonction l'identifie de manière unique. Pour obtenir l'adresse d'une fonction, vous pouvez utiliser soit :
Exemple
Considérez le code Go suivant :
<code class="go">type Action func(foo string) var Undefined Action = func(foo string) {} var Defined Action = func(foo string) {} func compareFunctions() { if fmt.Sprintf("%v", Undefined) == fmt.Sprintf("%v", Undefined) { fmt.Println("Undefined and Undefined are equal") } else { fmt.Println("Undefined and Undefined are not equal") } if fmt.Sprintf("%v", Defined) == fmt.Sprintf("%v", Defined) { fmt.Println("Defined and Defined are equal") } else { fmt.Println("Defined and Defined are not equal") } if fmt.Sprintf("%v", Undefined) == fmt.Sprintf("%v", Defined) { fmt.Println("Undefined and Defined are equal") } else { fmt.Println("Undefined and Defined are not equal") } }</code>
Lorsque vous exécutez ce code, il produit le résultat suivant :
Undefined and Undefined are equal Defined and Defined are equal Undefined and Defined are not equal
Cette sortie démontre que les fonctions peuvent être comparées en utilisant leurs adresses. et que deux fonctions avec des adresses différentes ne sont pas égales.
Conclusion
Bien que les valeurs des fonctions dans Go ne puissent pas être directement comparées, il est possible de comparer leurs adresses pour déterminer si ce sont la même fonction. En utilisant les méthodes décrites ci-dessus, vous pouvez identifier avec précision si deux fonctions sont égales dans Go.
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!