Maison  >  Article  >  développement back-end  >  Comment comprendre les fonctions d'ordre supérieur des types de fonctions dans Golang ?

Comment comprendre les fonctions d'ordre supérieur des types de fonctions dans Golang ?

WBOY
WBOYoriginal
2024-04-20 11:54:01551parcourir

Les fonctions d'ordre supérieur Golang acceptent et renvoient des fonctions. Ils se répartissent en deux catégories : recevoir des fonctions en paramètres : traiter d'autres fonctions ou exécuter des programmes dynamiques. Fonctions de retour sous forme de valeurs de retour : créez et renvoyez des fonctions qui peuvent être stockées et exécutées ultérieurement.

如何理解 Golang 中函数类型的高阶函数?

Comprendre les fonctions d'ordre supérieur de Golang

Une fonction d'ordre supérieur dans Golang est une fonction qui peut accepter et renvoyer des fonctions en tant que paramètres ou renvoyer des valeurs. Cela offre un fort potentiel de réutilisabilité, d’abstraction et de maintenabilité du code.

Types de fonctions d'ordre supérieur

Il existe deux principaux types de fonctions d'ordre supérieur dans Golang :

  • Accepter les fonctions en tant que paramètres : Ces fonctions gèrent d'autres fonctions en entrée, permettant une exécution dynamique.
  • Fonctions de retour comme valeurs de retour : Ces fonctions créent et renvoient des fonctions qui peuvent être stockées et utilisées pour une exécution ultérieure.

Cas pratique

Accepter une fonction en paramètre

func mapFunc(fn func(int) int, nums []int) []int {
    result := make([]int, len(nums))
    for i, num := range nums {
        result[i] = fn(num)
    }
    return result
}

func main() {
    nums := []int{1, 2, 3, 4, 5}
    squaredNums := mapFunc(func(num int) int {
        return num * num
    }, nums)
    fmt.Println(squaredNums) // 输出: [1 4 9 16 25]
}

Ici, mapFunc accepte une fonction fn en paramètre et l'applique à chaque élément. fn Place chaque élément au carré et renvoie un nouveau tableau. mapFunc 接受一个函数 fn 作为参数,并将它应用于每个元素。fn 将每个元素平方并返回一个新数组。

返回函数作为返回值

func genAdder(x int) func(int) int {
    return func(y int) int {
        return x + y
    }
}

func main() {
    add5 := genAdder(5)
    result := add5(10)
    fmt.Println(result) // 输出:15
}

在此示例中,genAdder 返回一个闭包函数,该闭包函数能够捕获并使用外部变量 xadd5

🎜Fonctions de retour comme valeurs de retour🎜🎜rrreee🎜Dans cet exemple, genAdder renvoie une fonction de fermeture qui capture et utilise la variable externe x. La fonction add5 est appelée, prenant 10 comme argument et renvoyant 15. 🎜

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