小编典典

将[] string传递给需要可变参数的函数

go

为了不重复我的自我,我想创建一个函数来处理一些命令。

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并且看起来函数签名正是我提供的。

在内部a []string应该与可变参数相同,但对于编译器来说似乎不一样。

有没有办法将可变参数传递给Command


阅读 250

收藏
2020-07-02

共1个答案

小编典典

[]string用另一个扩展...

cmd := exec.Command(name, arg...)

语言规范传递参数…参数

如果最终参数可分配给切片类型[]T...T则在参数后跟时可以将其作为参数的值原样传递...。在这种情况下,不会创建新的切片。

给定slice和call

s := []string{"James", "Jasmine"}
Greeting("goodbye:", s...)

在Greeting中,who将具有s与相同基础数组相同的值。

2020-07-02