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 關注
- 156 瀏覽
添加回答
舉報