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

为了不要一遍又一遍地重复我自己,我想创建一个处理运行一些命令的函数。


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?


喵喵时光机
浏览 245回答 1
1回答

鸿蒙传说

你[]string用另一个扩展...cmd := exec.Command(name, arg...)从语言规范的传递参数...参数如果最后一个参数可分配给切片类型[]T,则...T如果参数后跟.... 在这种情况下,不会创建新切片。给定切片 s 并调用s := []string{"James", "Jasmine"} Greeting("goodbye:", s...)在 Greeting 中,who将具有s与相同底层数组相同的值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go