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

Comment puis-je stocker des fonctions en tant que valeurs dans une Go Map ?

DDD
DDDoriginal
2024-12-14 02:50:10176parcourir

How Can I Store Functions as Values in a Go Map?

Stockage de fonctions dans une carte Go

Dans Go, une carte est un type qui stocke des paires clé-valeur. Les clés et les valeurs peuvent être de n’importe quel type. Dans votre cas, vous souhaitez stocker des fonctions dans une carte. Cependant, votre code ne fonctionne pas car un type de fonction ne peut pas être utilisé comme clé dans une carte.

Pour contourner ce problème, vous pouvez utiliser un type d'interface pour représenter une fonction. Un type d'interface définit un ensemble de méthodes qu'un type doit implémenter pour satisfaire l'interface. Dans ce cas, vous pouvez créer un type d'interface qui représente une fonction qui prend une chaîne comme paramètre.

import "fmt"

// A function type that takes a string as a parameter.
type StringFunc func(string)

// A map that stores functions that take a string as a parameter.
var funcs map[string]StringFunc

// A function that takes a string as a parameter.
func a(p string) {
    fmt.Println("function a parameter:", p)
}

// Main function.
func main() {
    // Create a map that stores functions that take a string as a parameter.
    funcs = make(map[string]StringFunc)

    // Add the 'a' function to the map.
    funcs["a"] = a

    // Call the 'a' function from the map.
    funcs["a"]("hello")
}

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