使用VSCode作为Golang开发环境前你需要知道的事
环境变量
GOROOT
GOROOT
环境变量用来定义Go SDK的安装位置,除非你想使用不同版本的Go,通常情况下我们是不需要更改这个环境变量的值的。在MacOS上,它的默认位置是 /usr/local/go
(Windows系统上是 c:\Go
), 假如你是通过HomeBrew来安装Go的话,那么它的默认安装位置是/usr/local/Cellar/go/
。此时,你将需要配置如下环境变量:
export GOROOT=/usr/local/Cellar/go/{version}
export PATH=$PATH:$GOROOT/bin
GOPATH
GOPATH
环境变量用来定义你工作空间的根目录。在Linux和MacOS上,它的默认值是
~/go
(在Windows上则是%USERPROFILE%/go
). GOPATH
存储了你的开发代码以及其依赖的其他文件。你可以通过配置这个值来自定义你的工作空间目录,这个目录下通常存在三个子目录,其用途如下:
- src/: 存放Go源代码;
- pkg/: 存放编译过的包代码;
- bin/: 存放编译过的可执行文件;
注意:官方在
Go 1.13
之后推出了Go modules
项目作为Go的包依赖管理解决方案,对于使用go mod
来管理包依赖的项目已经不再需要关注这个环境变量了,这是更优雅的解决方案,建议有条件的项目都尽早迁移到go mod
上。
GOMOD
该变量表示的是 go.mod
文件所在目录的绝对路径. 当开启module-aware
模式时,而当前目录又不存在go.mod
文件时, GOMOD
值会被设置为"/dev/null"
( 在Windows上,则为"NUL"
). 当关闭module-aware模式时,GOMOD
的值将是一个空字符串。
我们通常无需手动设置这个变量值,因为go tool
会在项目的根目录找到 go.mod
文件后主动设置其值为正确的位置。
VSCode配置
如下配置主要针对使用GOPATH
的老项目而言,新项目建议无脑使用GOMOD
。
自动推导 GOPATH
注意: 该功能仅在
GOPATH
模式下生效,GOMOD
模式下无效,并且注意go.inferGopath
配置会覆盖go.gopath
配置。
简单说,打开这个功能后,IDE会递归搜索当前工作目录的上级目录直到找到
src
目录,然后将src
目录的上级目录作为GOPATH
,举个栗子,假设你配置了你的GOPATH
为$HOME/go
,对于如下目录结构的项目:
foo/
└── bar
└── src
└── main.go
如果你将 foo
目录作为你工作空间的根目录,那么 "go.inferGopath"
会自动将GOPATH
的值设置为 $HOME/go:/path/to/foo/bar
.
这个设置非常有用,因为对于不使用GOMOD
的项目,你将无需为这类项目单独配置 GOPATH
。
将工具包安装到另外的目录 GOBIN
如果你频繁的切换你的 GOPATH
,当在VSCode中打开这些新项目时拓展经常会提示你安装Go-Tools
。对此,你可以通过将工具包的路径加到PATH
里来解决这个问题。又或者,你可以通过 GOBIN
来指定所有这些二进制工具包的安装位置配,配置如下:
"go.toolsEnvVars": {
"GOBIN": "path/to/gobin"
}