如何传递切片作为可变参数输入?

我有一个功能func more(... t)。我想知道是否可以使用切片来填充参数列表...

我正在尝试解决以下程序。基本上是模仿一个普通的外壳,该外壳以字符串形式接收命令。

命令功能需要一个参数“列表”,我看不到如何将字符串转换为这样的列表

    import "os/exec"

import "strings"

func main(){

plainCommand := "echo hello world"

sliceA := strings.Fields(plainCommand)

cmd := exec.Command(sliceA)

}

回答:

Go编程语言规范

将参数传递给…参数

如果f是最终参数类型为… T的可变参数,则该函数中的参数等效于[] T类型的参数。在f的每次调用中,传递给最终参数的参数是[]

T类型的新切片,其连续元素是实际参数,所有这些实际参数都必须分配给T类型。因此,切片的长度为参数绑定到最终参数,并且对于每个调用站点可能有所不同。


包执行

func命令

func Command(name string, arg ...string) *Cmd

命令返回Cmd结构以给定参数执行命名程序。

返回的Cmd的Args字段由命令名称后跟arg的元素构成,因此arg不应包括命令名称本身。例如,Command(“ echo”,“ hello”)


例如,

package main

import (

"fmt"

"os/exec"

)

func main() {

name := "echo"

args := []string{"hello", "world"}

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

out, err := cmd.Output()

if err != nil {

fmt.Println(err)

}

fmt.Println(string(out))

}

输出:

hello world

以上是 如何传递切片作为可变参数输入? 的全部内容, 来源链接: utcz.com/qa/400201.html

回到顶部