我希望能够调用一个可变参数函数并动态组合参数。以fmt.Printf()
为例,如果我有一个struct
:
type Foo struct {
a int
b string
}
我想调用fmt.Printf(foo.a, foo.b)
。但是如果我有另一个有3个字段的Bar struct
,我想调用fmt.Printf(bar.a, bar.b, bar.c)
。
所以我想写一个这样的函数:
func MyPrint(obj interface{})
您需要定义一个函数,然后可以使用MyPrint(foo)
或MyPrint(bar)
进行调用。代码将自动发现foo
有2个字段并执行:
...
fmt.Printf(foo.a, foo.b)
bar
有3个字段并执行。...
fmt.Printf(bar.a, bar.b, bar.c)
在Python中,您可以执行类似于
call(*list)
的操作。我如何在Go中实现这一点?
[]interface
即可。 - Gujarat Santana[] interface
无法被func(params ... interface{})
接受。 - lang2func boo(params ...interface{}){}
似乎能解决你的问题。 - Rodrigo