为了账号安全,请及时绑定邮箱和手机立即绑定

如何将切片解压缩为部分函数参数?

如何将切片解压缩为部分函数参数?

Go
江户川乱折腾 2022-10-10 16:56:00
我正在使用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.Argsargs = append([]string{"script_name.py"}, args...)out, err := exec.Command("python3", args...).Output()我错过了什么吗?有没有办法同时传递常量字符串和解压数组?这里的语言限制是什么?为什么要区分string, string, string和string, string...?我很想更深入地理解这一点。
查看完整描述

1 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

  1. 不。

  2. 约束在规范中有详细说明:

如果最后一个参数可分配给切片类型 []T 并且后跟 ...,则它将作为 ...T 参数的值原封不动地传递。

如您所见,这是您可以将切片分解为可变参数的唯一情况。


查看完整回答
反对 回复 2022-10-10
  • 1 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号