In order to don't repeat my self over and over I wanted to create a function that handles running some commands.
func runCommand(name string, arg ...string) error {
cmd := exec.Command(name, arg)
if err := cmd.Run(); err != nil {
return err
} else {
return nil
}
}
Once I try to run this I get the following error:
cannot use arg (type []string) as type string in argument to exec.Command
I had a look into the implementation of the os.Command
and it looks that the function signature is exact what I supply.
Internally a []string
should be the same as variadic parameter but for the compiler it seems not.
Is there a way to pass the variadic parameter into the Command
?
You expand the []string
with another ...
cmd := exec.Command(name, arg...)
From the language spec on Passing arguments to ... parameters
If the final argument is assignable to a slice type
[]T
, it may be passed unchanged as the value for a...T
parameter if the argument is followed by...
. In this case no new slice is created.Given the slice s and call
s := []string{"James", "Jasmine"} Greeting("goodbye:", s...)
within Greeting,
who
will have the same value ass
with the same underlying array.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With