go - Golang 错误 - 未声明的名称:xxx 编译器
问题描述
我正在编写一段 Golang 来执行用 bash 脚本正确编写的 curl 命令。这是我到目前为止所拥有的(在 VSCode 中):
url="https://<DOMAIN>/blah/blah/blah/" //<--valid url, used in bash script and it worked
cmd := exec.Command("curl", "-s --user <USERNAME> --request GET --url "+url+" --header 'Accept: application/json'")
out, err = cmd.Output()
if err != nil {
fmt.Println("erorr", err)
return false
}
fmt.Println(out)
所有这一切最终在我使用 out 和 err 的不同行上给了我错误“未声明的名称:err(编译)”和“未声明的名称:out(编译)”。我在这里的帖子中看到了这种格式,所以这就是我从中得到的。在这种情况下,我想不出使用 Stdin 或 Stdout 的正确方法。有人可以帮忙吗?
解决方案
您的编译器错误是由于这一行,它试图分配给两个变量(如错误所说)未声明:
out, err = cmd.Output()
这可能应该是一个简短的变量声明,即:
out, err := cmd.Output()
但是,一旦修复,它仍然无法工作,因为您将所有 CLI 参数作为单个参数传递给 curl。它应该是:
cmd := exec.Command("curl", "-s", "--user", "<USERNAME>", "--request", "GET", "--url", url, "--header", "Accept: application/json")
尽管从 Go 程序中调用 curl 是相当不寻常的;通常您会使用已经存在于 中的 HTTP 客户端net/http
,因此很可能所有这些代码都应该替换为使用本机客户端。
推荐阅读
- gradle - 在 Android gradle 文件中编写 groovy 代码时遇到问题
- haskell - 这个 Haskell 代码可以按书面形式编译吗?
- javascript - 用大括号定义对象绑定后如何访问该对象?
- python - 在 Max Value Tkinter 处停止进度条
- apache-kafka - Kafka消息按键分区
- reactjs - react-redux thunk 中的用户 aync-await
- webpack - 使用 html-webpack-plugin 时,供应商块仅包含在第一个 html 文件中
- python - 404 页面未找到“GET /accounts/login/?next=/profile/HTTP/1.1”404
- haskell - 仅使用比较运算符计算列表中每个元素的频率
- jquery-query-builder - 如何获取getRule json对象输出中选中字段的optgroups对象?