Maison  >  Article  >  développement back-end  >  Mécanisme dynamique de création et de destruction de type de fonction golang

Mécanisme dynamique de création et de destruction de type de fonction golang

王林
王林original
2024-04-28 15:12:011135parcourir

Le langage Go fournit le type func pour la création et la destruction dynamiques de valeurs de fonction : Création : utilisez le mot-clé func pour créer dynamiquement un type de fonction, tel que f := func(x int) int { return x * x }. Appel : transmettez une valeur de fonction en tant que paramètre à une autre fonction, telle que call(f, 5). Destruction : les valeurs de fonction sont détruites lorsqu'elles sortent de la portée, à l'instar des variables.

Mécanisme dynamique de création et de destruction de type de fonction golang

Mécanisme dynamique de création et de destruction de types de fonctions dans le langage Go

Le langage Go fournit un type func intégré, qui nous permet de créer et d'utiliser des valeurs de fonction. func 类型,它允许我们创建和使用函数值。

函数类型的动态创建

可以使用 func 关键字动态创建函数类型:

f := func(x int) int {
    return x * x
}

以上代码创建了一个函数类型,它接受一个整数参数并返回一个整数。

动态调用函数值

可以通过将函数值作为参数传递给另一个函数来调用它:

func call(f func(int) int, x int) {
    fmt.Println(f(x))
}

call(f, 5)

销毁函数值

函数值的生命周期与变量相同,当它们超出作用域时,它们将被销毁。

实战案例:动态创建回调函数

在 goroutine 中创建回调函数来处理结果是一种常见场景:

func main() {
    ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
    defer cancel()

    resultCh := make(chan int)

    // 创建回调函数
    f := func(result int) {
        resultCh <- result
    }

    go func() {
        // 模拟耗时的处理
        time.Sleep(5 * time.Second)
        result := 42
        f(result)
    }()

    select {
    case result := <-resultCh:
        fmt.Println("Received result:", result)
    case <-ctx.Done():
        fmt.Println("Timed out waiting for result")
    }
}

在该示例中,动态创建的回调函数 f

Création dynamique de types de fonctions

Vous pouvez utiliser le mot-clé func pour créer dynamiquement des types de fonctions : 🎜rrreee🎜Le code ci-dessus crée un type de fonction qui accepte un paramètre entier et renvoie un nombre entier. 🎜

Valeur de fonction d'appel dynamique

🎜Vous pouvez appeler une valeur de fonction en la passant en paramètre à une autre fonction : 🎜rrreee

Détruire la valeur de fonction

🎜Une valeur de fonction a le même cycle de vie en tant que variable, elles seront détruites lorsqu'elles seront hors de portée. 🎜

Cas pratique : créer dynamiquement une fonction de rappel

🎜Créer une fonction de rappel dans une goroutine pour traiter les résultats est un scénario courant : 🎜rrreee🎜Dans cet exemple, la fonction de rappel créée dynamiquement f code > est utilisé pour notifier le goroutine principal du résultat une fois le traitement terminé par le goroutine. 🎜

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