为了不重复我的自我,我想创建一个函数来处理一些命令。
func runCommand(name string, arg ...string) error { cmd := exec.Command(name, arg) if err := cmd.Run(); err != nil { return err } else { return nil } }
一旦我尝试运行它,我得到以下错误:
cannot use arg (type []string) as type string in argument to exec.Command
我研究了的实现,os.Command并且看起来函数签名正是我提供的。
os.Command
在内部a []string应该与可变参数相同,但对于编译器来说似乎不一样。
[]string
有没有办法将可变参数传递给Command?
Command
您[]string用另一个扩展...
...
cmd := exec.Command(name, arg...)
从语言规范的传递参数…参数
如果最终参数可分配给切片类型[]T,...T则在参数后跟时可以将其作为参数的值原样传递...。在这种情况下,不会创建新的切片。 给定slice和call s := []string{"James", "Jasmine"} Greeting("goodbye:", s...) 在Greeting中,who将具有s与相同基础数组相同的值。
如果最终参数可分配给切片类型[]T,...T则在参数后跟时可以将其作为参数的值原样传递...。在这种情况下,不会创建新的切片。
[]T
...T
给定slice和call
s := []string{"James", "Jasmine"} Greeting("goodbye:", s...)
在Greeting中,who将具有s与相同基础数组相同的值。
who
s