当前位置: 首页 > 面试题库 >

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

景恩
2023-03-14
问题内容

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

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


问题答案:

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

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

从语言规范的传递参数…参数

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

给定slice和call

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

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



 类似资料:
  • 问题内容: 我有一个PHP函数,该函数需要可变数量的参数(使用和),但是我要传递给该函数的参数数量取决于数组的长度。有没有一种方法可以使用可变数量的参数来 调用 PHP函数? 问题答案: 如果参数在数组中,则该函数可能会对您有兴趣。 如果您要传递的参数数量取决于数组的长度,则可能意味着您可以将它们自己打包到数组中-并将其用于第二个参数。 然后,您传递给该数组的元素将作为不同的参数被函数接收。 例如

  • 问题内容: 与在或中使用的方式类似: 问题答案: 是。 如果你不理会关键字参数,这很简单并且可以工作: 如你所见,Python将为你提供一个包含所有参数的元组。 对于关键字参数,你需要将其作为单独的实际参数接受,如的所示。

  • 问题内容: 我有一个充满元素的arrayList。我想将该数组列表的元素作为参数传递给可变参数函数。 我的功能 我的ArrayList 我想将其传递给函数,就像我单独传递它们一样。 这样的事情可能吗? 提前致谢。 问题答案: 做就是了: 它将复制到给定的数组并返回它。所有vararg函数也可以为该参数采用数组,因此适用于: 所有合法电话为: 一个警告: 涉及原始数组的Vararg调用无法正常工作。

  • 在Swift编程语言中,它说: 函数也可以接受可变数目的参数,将它们收集到数组中。 当我用逗号分隔的数字列表(`sumof(1,2,3,4)调用这样一个函数时,它们在函数中作为一个数组可用。 问题:如果我已经有一个数组要传递给这个函数,该怎么办? 这将失败,并出现编译器错误,“无法找到接受所提供参数的'__conversion'的重载”。有没有办法把一个现有的数组变成一个我可以传递给一个变量函数的

  • 以这种方式传递参数有问题,我得到以下错误:“std::thread::thread”:没有重载函数接受4个参数。我怎么能这么做?

  • 我想通过包装C 11中的std::thread类来使用我自己的Thread实现,这样我就可以像我想要的那样处理异常。 这是我的包装类: 如果没有争论,它的效果相当不错: …但如果我尝试传递可变参数: ...我在编译时收到一个错误: buildroot-2014.02/output/host/usr/i586-buildroot-linux-uclibc/include/c /4.8.2/funct