如果我們嘗試從Go打開給定的URL,則非常簡單,如下面的代碼所示(對于mac):exec.Command("open", "https://google.com").Run()但是,如果URL具有參數,我們如何做同樣的事情呢?例如,如果我們嘗試打開一個Facebook登錄網址:“https://www.facebook.com/v11.0/dialog/oauth?client_id=123456&redirect_uri=https://example/com”,則該命令失敗,退出狀態為1。即使我們為特殊字符 ?、& & 和 = 包含反斜杠也是如此。網址將更改為 。https://www.facebook.com/v11.0/dialog/oauth\?client_id\=123456\&redirect_uri\=https://example/com如果我們使用,上面的URL將在默認瀏覽器中打開open https://www.facebook.com/v11.0/dialog/oauth\?client_id\=123456\&redirect_uri\=https://example/com終端中的命令。但是當從Go這樣做時,它會失??!有沒有辦法從Go做同樣的事情?是的,可以使用 來完成。但這不會打開默認瀏覽器,這是用戶最有可能登錄的位置。exec.Command("open", "-a", "safari", url)
2 回答

有只小跳蛙
TA貢獻1824條經驗 獲得超8個贊
它實際上在沒有反斜杠的情況下工作。事實證明,終端中需要反斜杠,因為終端在將字符串發送到瀏覽器之前在內部轉義反斜杠。但是,如果發生 go,它只是將原始字符串發送到瀏覽器。
在 Go 中使用:
exec.Command("open", "https://www.facebook.com/v11.0/dialog/oauth?client_id=123456&redirect_uri=https://example/com")
從終端命令行:
open https://www.facebook.com/v11.0/dialog/oauth\?client_id\=123456\&redirect_uri\=https://example/com

MMTTMM
TA貢獻1869條經驗 獲得超4個贊
嘗試追加反斜杠(\)
exec.Command("open", "https://www.facebook.com/v11.0/dialog/oauth\\?client_id/\\=123456/\\&redirect_uri/\\=https://example/com").Run()
- 2 回答
- 0 關注
- 297 瀏覽
添加回答
舉報
0/150
提交
取消