Maison > développement back-end > Golang > le corps du texte

Comment comparer les fonctions dans Go ?

Mary-Kate Olsen
Libérer: 2024-11-03 17:58:03
original
706 Les gens l'ont consulté

How to Compare Functions in Go?

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 :

  • fmt.Sprintf() : Cette méthode imprime l'adresse de la fonction dans une chaîne et la stocke dans une variable.
  • reflect.Value.Pointer() : Cette méthode renvoie l'adresse brute d'une valeur de fonction.

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

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

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!

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