golang で受け取った可変長引数を他の可変長引数に渡したい
Go の初心者です。
Golang で、正しく動いている次のコードがあります。
package main
import "os/exec"
import fmt "fmt"
func main() {
c, _ := exec.Command("git", "log", "--first-parent", "--merges").Output()
s := string(c[:])
fmt.Printf(s)
}
これの、コマンド実行部分を関数に切り出そうとして、次のように変更を行いました。
package main
import "os/exec"
import fmt "fmt"
func executeCommand(command ...string) string {
c, _ := exec.Command(command...).Output()
return string(c[:])
}
func main() {
s := executeCommand("git", "log", "--first-parent", "--merges")
fmt.Printf(s)
}
すると、次のエラーが発生します。
# command-line-arguments
./calc.go:7:27: error: argument 1 has incompatible type
c, _ := exec.Command(command...).Output()
^
./calc.go:7: confused by earlier errors, bailing out
command...
で、受け取った配列を展開して、 exec.Command()
に引き渡せるものだと思っていたのですが、上記の通りそうはなっていないです。
質問:
- 私は、何を間違えているのでしょうか。