I'd like to call a variadic function and compose the parameter dynamically. Take fmt.Printf()
for example. if I have a struct
:
type Foo struct {
a int
b string
}
I'd like to call fmt.Printf(foo.a, foo.b).
But if I have another Bar struct
with 3 fields, I'd like to call fmt.Printf(bar.a, bar.b, bar.c)
.
So I'd like to write a function like this:
func MyPrint(obj interface{})
and be able to call it with MyPrint(foo)
or MyPrint(bar)
and the code will automatically figure out that foo
has 2 fields and do:
...
fmt.Printf(foo.a, foo.b)
bar
has 3 fields and do
...
fmt.Printf(bar.a, bar.b, bar.c)
In Python you can do something like call(*list)
. How can I achieve this in Go?