亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將切片解壓縮為部分函數參數?

如何將切片解壓縮為部分函數參數?

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 關注
  • 94 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號