去功能地图 [英] Go map of functions
本文介绍了去功能地图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经尝试过了,但这不行。
func a(param string){
}
m:= map [string] func {
'a_func':a,
}
为key,value:= range m {
如果key =='a_func'{
value(param)
}
}
解决方案
你想做这样的事情吗?我修改了这个例子来使用不同类型和数量的函数参数。
package main
导入fmt
func f(p string){
fmt.Println(function f parameter:,p)
}
func g(p string,q int){
fmt.Println(function g parameters:,p,q)
}
func main(){
m := map [string] interface {} {
f:f,
g:g,
}
for k,v:= range m {
switch k {
casef:
v。(func(string))(astring)
caseg:
v。(func ,int))(astring,42)
}
}
}
I have Go program that has a function defined. I also have a map that should have a key for each function. How can I do that?
I have tried this, but this doesn't work.
func a(param string) { } m := map[string] func { 'a_func': a, } for key, value := range m { if key == 'a_func' { value(param) } }
解决方案
Are you trying to do something like this? I've revised the example to use varying types and numbers of function parameters.
package main
import "fmt"
func f(p string) {
fmt.Println("function f parameter:", p)
}
func g(p string, q int) {
fmt.Println("function g parameters:", p, q)
}
func main() {
m := map[string]interface{}{
"f": f,
"g": g,
}
for k, v := range m {
switch k {
case "f":
v.(func(string))("astring")
case "g":
v.(func(string, int))("astring", 42)
}
}
}
这篇关于去功能地图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文