如果我们尝试从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 关注
- 267 浏览
添加回答
举报
0/150
提交
取消