Maison >développement back-end >Golang >Le rôle de la fonction de rappel dans la fonction golang

Le rôle de la fonction de rappel dans la fonction golang

王林
王林original
2024-04-25 21:36:01433parcourir

Les fonctions de rappel dans Go sont transmises en tant que paramètres dans les fonctions et sont utilisées pour effectuer des actions spécifiques après que des événements ou des conditions spécifiques se produisent, améliorant ainsi la réutilisabilité et l'évolutivité du code. Les principales fonctions sont : Traitement des événements : en tant que gestionnaire de rappel de l'écouteur d'événement, agissant lorsque l'événement se produit. Traitement des données : le traitement est effectué sur chaque élément de la tranche ou de la carte. Implémentation de l'interface : implémentez l'interface via des fonctions de rappel et fournissez le comportement des méthodes d'interface.

Le rôle de la fonction de rappel dans la fonction golang

Le rôle de la fonction de rappel dans la fonction dans Go

Dans Go, la fonction de rappel fait référence à la fonction passée en paramètre dans la fonction pour effectuer une action spécifique après qu'un événement ou une condition spécifique se soit produit. Il fournit un moyen de dissocier la logique métier de la logique des fonctions principales, améliorant ainsi la réutilisabilité et l'évolutivité du code.

Syntaxe

func main() {
    // 定义一个回调函数
    cb := func(i int) {
        fmt.Println("回调函数中的值:", i)
    }

    // 将回调函数传递给主函数
    doSomething(cb)
}

func doSomething(f func(int)) {
    for i := 0; i < 10; i++ {
        // 调用回调函数
        f(i)
    }
}

Cas pratique

Traitement des événements :

Dans le traitement des événements, une fonction de rappel est généralement utilisée comme gestionnaire de rappel de l'écouteur d'événement pour prendre des mesures lorsqu'un événement spécifique se produit. Par exemple :

import (
    "fmt"

    "github.com/go-vgo/robotgo"
)

func main() {
    robotgo.EventHook(robotgo.KeyUp, func(e robotgo.Event) {
        fmt.Println("松开了一个按键:", e.Key)
    })
}

Traitement des données :

Les fonctions de rappel peuvent également être utilisées pour opérer sur les données, comme le traitement de chaque élément d'une tranche ou d'une carte. Par exemple :

slice := []int{1, 2, 3, 4, 5}

// 定义回调函数
cb := func(n int) {
    n++
}

// 对切片中的每个元素应用回调函数
for i := range slice {
    cb(&slice[i])
}

fmt.Println(slice) // 输出: [2 3 4 5 6]

Implémentation de l'interface :

Les interfaces peuvent être facilement implémentées via des fonctions de rappel, qui fournissent le comportement d'implémentation des méthodes d'interface. Par exemple :

type MyInterface interface {
    DoSomething(func(int))
}

type MyStruct struct{}

func (s *MyStruct) DoSomething(cb func(int)) {
    for i := 0; i < 10; i++ {
        cb(i)
    }
}

func main() {
    s := &MyStruct{}
    s.DoSomething(func(i int) {
        fmt.Println(i)
    })
}

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!

Déclaration:
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