我正在使用exec.Command它为其第二个参数接收可变数量的字符串。例如:
out, err = exec.Command("python3", "script_name.py", "argument", "--flag", "--another")
我也可以使用切片并使用以下方法解包...:
var args = []string{"script_name.py", "argument", "--flag", "--another"}
out, err = exec.Command("python3", args...)
但是将两者混合不起作用:
var args = []string{"argument", "--flag", "--another"}
out, err = exec.Command("python3", "script_name.py", args...)
失败:
./tester.go:12:29: too many arguments in call to exec.Command
have (string, string, []string...)
want (string, ...string)
这让我感到惊讶,因为类似的东西可以在 python 中工作。我试过寻找这个特定的案例,但我发现的大部分资源都只是一般的切片。我已经通过将“常量”部分添加到切片的开头来“解决”它(更像是一种解决方法),但想确保我没有遗漏任何东西:
var args = os.Args
args = append([]string{"script_name.py"}, args...)
out, err := exec.Command("python3", args...).Output()
我错过了什么吗?有没有办法同时传递常量字符串和解压数组?
这里的语言限制是什么?为什么要区分string, string, string和string, string...?我很想更深入地理解这一点。
江户川乱折腾
宝慕林4294392
随时随地看视频慕课网APP
相关分类