golang在go get时提示xx cannot download,xxx is a GOROOT, not a GOPATH. For more details see: 'go help ...

新换了电脑,把之前的go代码全拷贝了过来,顺便升了个级,在设置完GOPATH和GOROOT后,发现运行go version已经没问题了,是最新版本,但是当想下载一个新的包时,提示我我设置的GOPATH是GOROOT.

go get github.com/akavel/rsrc

package github.com/akavel/rsrc: cannot download, F:\GoPath is a GOROOT, not a GOPATH. For more details see: 'go help gopath'

我当时以为是设置的时候翻车了,在我仔细对照了几次配置文件后,发现并没有问题.本着"程序永远不会出错,错的一定是我,找不到错就人机对骂"的原则,我又从头走了几遍流程,问题还是没解决,只好去网上找,网上大多数都是说怎么配置gopath和goroot,或者说不要配置成一个目录,我的goroot和gopath都不在同一个磁盘下,显然不能解决我的问题.

随后找到一篇stackoverflow的文章,下面是链接和内容:

https://stackoverflow.com/questions/42809990/go-get-cannot-download-home-azhukov-go-is-a-goroot-not-a-gopath

"This error is caused by the go tool detecting a Go installation in your GOPATH. It's not telling you that your GOPATH is the GOROOT (that's a different message), it's telling your GOPATH looks like a GOROOT.

Cleaning out your GOPATH and running go get again will fix the error."

翻译一下就是这个错误除了说我们的GOPATH是GOROOT以外,还有一种解释,就是"我们的GOPATH看起来像GOROOT",清理一下GOPATH再运行.

这样就大概有思路了,我把我的GOPATH和真正的GOROOT中的src目录对照了一下,发现有很多目录是相同的,这是因为之前的GOPATH配置的不规范(我也不知道当时是啥情况,毕竟谁都有第一次).然后很明显的,我把GOPATH的src和GOROOT的src中的全部相同目录都删除掉,就可以执行go get了.

本着方便大家,我又尝试最小删除重复目录,最后发现,只要删除GOPATH下src下的cmd目录,就可以了.

结论:删除GOPATH中src目录中的cmd目录,再执行go get -v xxxxx

你可能感兴趣的:(golang在go get时提示xx cannot download,xxx is a GOROOT, not a GOPATH. For more details see: 'go help ...)