1 回答
TA贡献1785条经验 获得超8个赞
您将其作为(在最基本的情况下)作为map[keyType]func(这是从keyType您碰巧拥有的任何哈希值到不带参数且没有返回值的函数的映射)。
如果您有更多涉及的函数签名,您可以为其声明一个类型,然后使用该类型来定义您的地图:
type myFunc func(int, int) int
var dispatch[string]myFunc
func init() {
dispatch["add"] = func(a, b int) int { return a + b }
}
另一个可能具有说明性的示例如下(操场链接):
type printFunc func(string)
func sayHello(name string) {
fmt.Println("Hello", name)
}
func sayGoodbye(name string) {
fmt.Println("Goodbye", name)
}
func main() {
dispatch := map[string]printFunc{
"Alice": sayHello,
"Bob": sayGoodbye,
}
for _, name := range []string{"Alice", "Bob"} {
if f, ok := dispatch[name]; ok {
f(name)
} else {
fmt.Println("No entry for", name)
}
}
}
- 1 回答
- 0 关注
- 137 浏览
添加回答
举报