Retrieving Function Pointers from Function Names in Go
Many programming languages allow access to function pointers from string representations of function names. This capability is particularly useful for metaprogramming techniques, such as dynamically selecting functions for execution.
Solution in Go
Unlike some other languages, Go natively supports function pointers as first-class values, eliminating the need for additional mechanisms to obtain them from function names. Instead, functions can be directly passed as arguments to other functions.
For example, consider the following code:
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)) }
In this code, someOtherFunction accepts a function pointer as an argument and invokes the specified function with the provided arguments.
Using a Map for Dynamic Function Selection
In cases where the selection of a function depends on runtime information, you can use a map to associate function names with corresponding function pointers. For instance:
m := map[string]func(int, int) int{ "someFunction1": someFunction1, "someFunction2": someFunction2, } ... z := someOtherFunction(x, y, m[key])
This allows you to dynamically retrieve and execute functions based on a specified key.
The above is the detailed content of How Can I Retrieve Function Pointers from Function Names in Go?. For more information, please follow other related articles on the PHP Chinese website!