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() に引き渡せるものだと思っていたのですが、上記の通りそうはなっていないです。


質問:

  • 私は、何を間違えているのでしょうか。