Maison > développement back-end > Golang > Comment les expressions de méthode permettent-elles de transmettre des méthodes en tant qu'arguments dans Go ?

Comment les expressions de méthode permettent-elles de transmettre des méthodes en tant qu'arguments dans Go ?

Patricia Arquette
Libérer: 2024-11-27 11:26:13
original
718 Les gens l'ont consulté

How Do Method Expressions Enable Passing Methods as Arguments in Go?

Expressions de méthode dans Go

Les expressions de méthode dans Go vous permettent d'appeler une méthode avec un objet personnalisé comme premier argument. Cela peut être utile lorsque vous devez transmettre une action spécifique à une fonction.

Comprendre l'extrait de code

Considérez le code Go suivant :

func main() {
    dog := Dog{}
    b := (*Dog).Bark // method expression
    b(&dog, 5)
}

type Dog struct {}

func (d *Dog) Bark(n int) {
    for i := 0; i < n; i++ {
        fmt.Println("Bark")
    }
}
Copier après la connexion

Dans cet exemple, une expression de méthode est utilisée pour attribuer une fonction à la variable b. L'expression de méthode (*Dog).Bark associe la méthode Bark de type Dog à un récepteur de pointeur (*Dog).

Lorsque b est appelé, la méthode Bark est invoquée avec l'objet dog comme premier argument et 5 comme deuxième argument. La méthode imprime « Bark » sur la console cinq fois.

Avantages des expressions de méthode

  • Les expressions de méthode vous permettent de transmettre une action spécifique aux fonctions, même si l'objet n'est pas connu au moment de la compilation.
  • Ils fournissent un moyen de créer des types de fonctions personnalisés qui peuvent être utilisés avec d'autres types de fonctions d'ordre supérieur. fonctions.

Exemple d'utilisation

Les expressions de méthode peuvent être utilisées dans diverses situations. Par exemple, vous pouvez définir une fonction d'assistance qui prend une expression de méthode et un objet, puis effectue une action basée sur la méthode :

func DoAction(f func(*Dog, int), d *Dog, n int) {
    f(d, n)
}

...

func main() {
    var b func(*Dog, int)
    if (shouldBark) {
        b = (*Dog).Bark
    } else {
        b = (*Dog).Sit
    }
    d := Dog{}
    DoAction(b, &d, 3)
}
Copier après la connexion

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