如何在函数中传递动态参数

时间:2018-03-07 09:36:37

标签: go

我在做什么

 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")

2 个答案:

答案 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"
 }