Maison > développement back-end > Golang > Comment puis-je attribuer et appeler des fonctions en tant que valeurs dans une Go Map ?

Comment puis-je attribuer et appeler des fonctions en tant que valeurs dans une Go Map ?

Susan Sarandon
Libérer: 2024-12-09 18:34:15
original
788 Les gens l'ont consulté

How Can I Assign and Call Functions as Values in a Go Map?

Attribuer des fonctions aux touches dans une carte Go

Dans Go, vous pouvez définir des fonctions personnalisées et les attribuer comme valeurs aux touches dans une carte. Cela permet une exécution dynamique de fonctions basées sur une clé donnée.

Pour y parvenir, vous pouvez créer une carte de type map[string]func(...) où la clé est une chaîne et la valeur est une fonction. Cependant, le code fourni tente d'utiliser une syntaxe qui n'est pas prise en charge dans Go.

Pour résoudre ce problème, utilisez le code suivant :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

func a(param string) {

    fmt.Println("Function a called with param:", param)

}

 

func main() {

    m := map[string]func(string) {

        "a_func": a,

    }

 

    for key, value := range m {

        if key == "a_func" {

            value("test")

        }

    }

}

Copier après la connexion

Dans cet exemple :

  • La map[string]func(string) déclare une carte avec des clés de chaîne et des fonctions qui prennent un seul argument de chaîne.
  • La variable m initialise un map avec une clé "a_func" et une valeur qui est une référence à la fonction a.
  • La boucle de plage parcourt la carte, appelant la fonction associée à la clé "a_func" et passant "test" comme argument.

Notez que le type interface{} dans l'exemple de code fourni n'est pas nécessaire et peut être simplifié en func(...).

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