Go 的坑

1. 环境的坑

1) 执行 go install 命令时,报 cannot find GOROOT directory

        原始报错信息:

Tools environment: GOPATH=/home/one/Documents/GoWorkSpace/GoPath, GOBIN=/home/one/Documents/GoWorkSpace/shell
Installing 1 tool at the configured GOBIN: /home/one/Documents/GoWorkSpace/shell in module mode.
  gopls

Installing golang.org/x/tools/gopls@latest FAILED
{
 "killed": false,
 "code": 2,
 "signal": null,
 "cmd": "/usr/share/go/bin/go install -v golang.org/x/tools/gopls@latest",
 "stdout": "",
 "stderr": "go: cannot find GOROOT directory: /usr/lib/go-1.13\n"
}

1 tools failed to install.

gopls: failed to install gopls(golang.org/x/tools/gopls@latest): Error: Command failed: /usr/share/go/bin/go install -v golang.org/x/tools/gopls@latest
go: cannot find GOROOT directory: /usr/lib/go-1.13

        用 go env 命令可以查看 go 的执行环境参数,得到的结果具体如下:

one@one:~/Documents/GoWorkSpace/kitex$ go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN="/home/one/Documents/GoWorkSpace/shell"
GOCACHE="/home/one/.cache/go-build"
GOENV="/home/one/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/one/Documents/GoWorkSpace/GoPath/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/one/Documents/GoWorkSpace/GoPath"
GOPRIVATE=""
GOPROXY="https://goproxy.cn,direct"
GOROOT="/usr/share/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/share/go/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.17.6"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="0"
GOMOD="/home/one/Documents/GoWorkSpace/kitex/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build770022958=/tmp/go-build -gno-record-gcc-switches"

        从上面返回结果看,GOROOT 明明指向了 /usr/share/go 目录,而报错信息却指向 /lib/go-1.13,其原因在于 go env 命令中可以看到有个参数 GOENV,该参数指向了环境文件,该环境文件的配置项优先级最高。

        打开 /home/one/.config/go/env 文件,可以看到具体如下:

CGO_ENABLED=0
GO111MODULE=on
GOARCH=amd64
GOBIN=/home/one/Documents/GoWorkSpace/shell
GOOS=linux
GOPROXY=https://goproxy.cn,direct
GOROOT=/usr/lib/go-1.13

        原来问题纠结在这里,把 GOROOT 参数值改为正确的目录,本人目录为 /usr/share/go, 一切正常了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Golang Swagger是一种用于创建和管理API文档的工具。通过使用Swagger,我们可以自动化生成API文档,以便开发人员和用户可以更轻松地了解和使用API。在Golang项目中使用Swagger可以帮助我们定义API的路由和参数,并生成与之对应的文档。它可以通过SwaggerUI进行可视化展示,使得API的使用更加直观和便捷。 要在Golang项目中使用Swagger,首先需要安装Go对应的Swagger相关的库。通过使用命令"go get"来安装这些库,如下所示: ``` $ go get -u github.com/swaggo/swag/cmd/swag $ go get -u github.com/swaggo/gin-swagger $ go get -u github.com/swaggo/files $ go get -u github.com/alecthomas/template ``` 安装完这些库之后,我们可以在项目根目录下执行"swag init"命令,用于初始化Swagger相关的配置和文档。接着,我们重新启动服务端,并访问Swagger的地址"http://127.0.0.1:8000/swagger/index.html",就可以看到生成的Swagger文档。这个文档主要分为三个部分:项目主体信息、接口路由信息和模型信息,它们共同组成了API文档的主要内容。 如果你想更深入地了解Golang Swagger的使用,可以参考官方文档提供的详细使用指南。同时,也可以参考示例存储库"golang-swaggerui-example"来学习如何在Golang项目中设置SwaggerUI并编写API文档。 总结起来,Golang Swagger是一种用于创建和管理API文档的工具,通过它我们可以方便地定义和生成API文档,并通过SwaggerUI进行可视化展示。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [基于golang的swagger超贴心、超详细使用指南【有很多】](https://blog.csdn.net/asdfadafd/article/details/126081054)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [golang-swaggerui-example:Golang的SwaggerUI生成示例](https://download.csdn.net/download/weixin_42139871/18681893)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值