首页 > 解决方案 > 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 的正确方法。有人可以帮忙吗?

标签: gocurlvisual-studio-code

解决方案


您的编译器错误是由于这一行,它试图分配给两个变量(如错误所说)未声明:

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,因此很可能所有这些代码都应该替换为使用本机客户端。


推荐阅读