Maison > développement back-end > Golang > pointeur de fonction golang passé en paramètre

pointeur de fonction golang passé en paramètre

WBOY
Libérer: 2024-04-22 14:18:01
original
924 Les gens l'ont consulté

Les pointeurs de fonction sont des variables dans Go qui pointent vers l'adresse mémoire d'une fonction, permettant de traiter des fonctions telles que des types de valeur. Lorsqu'il est passé en paramètre, il fournit un comportement dynamique : Définir le type de pointeur de fonction : func(*TypeName)ReturnType Passer le pointeur de fonction en tant que paramètre à la fonction pour implémenter différentes fonctions basées sur le pointeur de fonction (par exemple, trier les fonctions de comparaison )

pointeur de fonction golang passé en paramètre

Passer des pointeurs de fonction en tant que paramètres dans Go

Comprendre les pointeurs de fonction

Dans Go, un pointeur de fonction est une variable qui pointe vers une fonction. Il s'agit essentiellement d'un pointeur vers l'adresse mémoire de la fonction. Les pointeurs de fonction nous permettent de traiter les fonctions comme les autres types de valeurs.

Syntaxe des pointeurs de fonction

Le type de pointeur de fonction est défini par la syntaxe suivante :

func(*TypeName)ReturnType
Copier après la connexion

Par exemple, le code suivant définit un pointeur vers une fonction qui reçoit un paramètre int et renvoie une valeur int :

type fnType func(int) int
Copier après la connexion

Pointeur de fonction en tant que paramètres

Les pointeurs de fonction peuvent être transmis en tant que paramètres d'autres fonctions. Cela nous permet de fournir dynamiquement différents comportements aux fonctions.

Cas pratique : Fonction de tri

Considérons un scénario dans lequel un ensemble d'entiers doit être trié. Nous pouvons définir une fonction appelée sortInts qui accepte une tranche d'entiers et un pointeur de fonction comme paramètres. Le pointeur de fonction spécifiera la fonction utilisée pour comparer et trier les entiers. sortInts 的函数,该函数接受一个整数切片和一个函数指针作为参数。函数指针将指定用于比较和排序整数的函数。

func sortInts(nums []int, compareFn fnType) {
    // 根据 compareFn 函数排序 nums
}
Copier après la connexion

我们可以在 main 函数中调用 sortInts

func main() {
    nums := []int{5, 2, 8, 3, 1}
    
    // 升序排序
    sortInts(nums, func(a, b int) int { return a - b })
    fmt.Println(nums) // [1 2 3 5 8]
    
    // 降序排序
    sortInts(nums, func(a, b int) int { return b - a })
    fmt.Println(nums) // [8 5 3 2 1]
}
Copier après la connexion
Nous pouvons appeler sortInts dans la fonction principale et transmettre différentes fonctions de comparaison pour trier les tranches entières différemment.

rrreeeConclusion

Les pointeurs de fonctions sont un outil puissant dans Go qui nous permet de créer du code dynamique et réutilisable. En comprenant la syntaxe des pointeurs de fonction et le mécanisme de transmission des pointeurs de fonction comme arguments, nous pouvons facilement implémenter des comportements et des algorithmes complexes. 🎜

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal