如何拆分字符串并将其用作Go中的函数参数?

时间:2014-01-26 21:41:38

标签: go

我有一个用空格分隔的字符串,在本例中是一个命令:ls -al

Go有一个方法exec.Command需要接受这个命令作为多个参数,我这样称呼它:exec.Command("ls", "-al")

有没有办法获取任意字符串,用空格拆分,并将其所有值作为参数传递给方法?

4 个答案:

答案 0 :(得分:4)

您可以使用[]T将任何...T作为foo...类型的参数传递,其中foo的类型为[]Tspec

exec.Command的类型为:

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

在这种情况下,您必须直接传递第一个参数(名称),然后用...扩展其余参数:

args := strings.Fields(mystr) //or any similar split function
exec.Command(args[0], args[1:]...)

答案 1 :(得分:0)

我可以回答您问题的第一部分 - 请参阅strings.Fields

答案 2 :(得分:0)

是的。一个例子:

func main() {
    arguments := "arg1 arg2 arg3"

    split := strings.Split(arguments, " ")

    print(split...)
}

func print(args...string) {
    fmt.Println(args)
}

答案 3 :(得分:0)

我最近发现了一个很好的包,可以像处理shell一样处理拆分字符串,包括处理引号等:https://github.com/kballard/go-shellquote