去功能地图 [英] Go map of functions

查看:154
本文介绍了去功能地图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有Go程序定义了一个函数。我也有一个地图应该有一个关键的功能。我如何做到这一点?



我已经尝试过了,但这不行。

 
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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆