func foo(a string) {}
func bar(b, c string)
type fn func(string)
m: = map[string] fn {
"a": "foo",
"b": "bar"
}
当我调用这样的函数时
m["a"]("Hello")
m["b"]("Hello", "World")
我收到错误,因为type fn func(string)
这里fn有单个参数但是我在m["b"]("Hello", "World")
中传递了双参数
错误:[不能使用(键入func(string,string))作为map中的fn类型 价值]
我想制作动态type fn func(string)
,以便我可以传递多个参数,以便我可以像这样调用
m["a"]("Hello")
m["b"]("Hello", "World")
答案 0 :(得分:4)
创建一个可变参数函数,它将任意数量的参数作为参数传递给函数。
func foo(nums ...string) {}
m:= map[string]fn{
"a": "foo",
"b": "bar"
}
有关可变参数函数的更多信息,请查看此Answer
答案 1 :(得分:1)
使用界面
解决m: = map[string]interface{} {
"a": "foo",
"b": "bar"
}