In Go, it's possible to retrieve a function pointer from a function's name provided as a string. This capability is valuable in metaprogramming scenarios, such as dynamically invoking functions based on string parameters.
Unlike some dynamic languages, Go functions are first-class values. Therefore, you can directly pass functions as arguments to other functions. Consider the following example:
package main import "fmt" func someFunction1(a, b int) int { return a + b } func someFunction2(a, b int) int { return a - b } func someOtherFunction(a, b int, f func(int, int) int) int { return f(a, b) } func main() { fmt.Println(someOtherFunction(111, 12, someFunction1)) fmt.Println(someOtherFunction(111, 12, someFunction2)) }
Output:
123 99
In this example, someOtherFunction takes two integer arguments and a function pointer (the f parameter). It then invokes the provided function with the given arguments. The result is printed.
If the selection of the function depends on a value known only at runtime, you can use a map:
m := map[string]func(int, int) int{ "someFunction1": someFunction1, "someFunction2": someFunction2, } ... z := someOtherFunction(x, y, m[key])
The above is the detailed content of How Can I Use String Function Names to Call Functions Dynamically in Go?. For more information, please follow other related articles on the PHP Chinese website!