我想做一个go get:

go get github.com/go-sql-driver/mysql

它失败,并出现以下错误:

package github.com/go-sql-driver/mysql: cannot download, $GOPATH not set. For more details see: go help gopath

当我做一个go env,一个go值列表如下所示:

ubuntu@ip-xxx-x-xx-x:~$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/usr/lib/go"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CGO_ENABLED="1"

显然GOPATH没有设置,我该如何设置,在哪里设置?

我看到许多线程提到了这个错误,但没有一个线程提供了我的问题的答案,需要编辑哪个文件来为这个路径提供一个值?


当前回答

新方法:模块

从Go 1.11开始,你不再需要使用GOPATH。简单地转到你的项目目录,这样做一次:

go mod init github.com/youruser/yourrepo

这样,Go就在该目录下创建了一个模块根目录。 您可以创建任意多的模块。 有关步骤的说明,也请参见这个答案。


旧方法:GOPATH

如果你坚持使用GOPATH,请注意以下几点:

自从Go 1.8以来,你不需要设置你的GOPATH或GOROOT。 默认情况下,GOPATH位于用户/主目录下。

从文档中可以看到:

如果没有设置GOPATH,则在Unix系统上假设为$HOME/go,在Windows系统上假设为%USERPROFILE%\go。如果希望使用自定义位置作为工作空间,可以设置GOPATH环境变量。

其他回答

稍后您还将需要GOPATH。所以把它添加到~/.bashrc。

如果您正在使用ZSH:

nano ~/.zshrc

然后在文件末尾添加:

export PATH=$PATH:/usr/local/go/bin

最后:

source ~/.zshrc

并打开一个新的终端

go version

这个脚本将帮助你切换哥帕特。https://github.com/buffonomics/goswitch

在终端中编写这段代码。

export GOPATH=path/to/your/gopath/directory

注意:这将在每次新的终端窗口或系统重新启动时重置。

要持久,请根据shell将下面的代码粘贴到.zshrc或.bashrc文件中。这些文件在您的主目录。如下图所示。

export PATH=path/to/some/other/place/composer/for/example
export GOPATH=path/to/your/gopath/directory
export PATH=$PATH:$GOPATH/bin

新方法:模块

从Go 1.11开始,你不再需要使用GOPATH。简单地转到你的项目目录,这样做一次:

go mod init github.com/youruser/yourrepo

这样,Go就在该目录下创建了一个模块根目录。 您可以创建任意多的模块。 有关步骤的说明,也请参见这个答案。


旧方法:GOPATH

如果你坚持使用GOPATH,请注意以下几点:

自从Go 1.8以来,你不需要设置你的GOPATH或GOROOT。 默认情况下,GOPATH位于用户/主目录下。

从文档中可以看到:

如果没有设置GOPATH,则在Unix系统上假设为$HOME/go,在Windows系统上假设为%USERPROFILE%\go。如果希望使用自定义位置作为工作空间,可以设置GOPATH环境变量。