#直接应用
①gopath系统环境变量设置:
这个设置以后,系统默认的go环境就指定好了,如果不重新指定,则默认识别的都是这里设置的(包括代码提示引用的路径、三方包go get安装的路径)。常用于统一存放第三方包和安装的bin插件。
# 创建一个global作为默认go项目,用作系统默认go环境,主要用于存放三方包
GOPATH="/Users/shuai/Documents/global"
export GOPATH
export PATH=$GOPATH:$PATH
export PATH=$GOPATH/bin:$PATH
②vscode>“用户设置”,第三方包依赖的插件路径
由于vscode支持为每个项目单独设置环境:“工作区设置”。为了避免每个工作区重复下载依赖的插件,可以手动指定插件统一依赖于系统环境指定的GOPATH(我们安装的包默认也是放在这里的),参考①。
"go.toolsGopath":"/Users/shuai/Documents/global"
③vscode>打开项目的“工作区设置”,为每个项目设置单独的gopath:
"go.gopath": "/Users/shuai/Documents/project_a"
④安装vscode的插件。
go get xxx
国内墙网络问题解决办法:
- 方式1:手动下载,一般在github上下载即可,放到系统环境变量指定的GOPATH的src下,按目录建好,然后执行go install。如果实在是网络较差,可以使用golang三方包下载。
- 方式2:给vscode配置代理,一劳永逸,不过需要先找到免费代理或购买代理。
以上操作完成即可正常开发,下面是详解。
#GOPATH讲解
gopath分为系统环境和vscode环境。
go env可以查看
,设置的方法就是添加环境变量GOPATH://mac环境下在~/.bash_profile文件中添加
GOPATH=指定路径
export GOPATH
export PATH=$GOPATH:$PATH //将GOPATH放到环境变量中,也可以不放。
// “用户设置”:全局环境,所有打开的窗口项目公用的。
// “工作区设置”:打开项目的独立设置,右上角下拉菜单选择。
"go.gopath": "指定路径"
#GOBIN讲解
gobin的作用:用于指定编译后生成的可执行文件所在的目录。
1. 如果不指定GOBIN,编译后的可执行文件默认放在GOPATH/bin下。
2. 指定GOBIN,则无论GOPATH设置为什么,都只会放在指定的GOBIN下。
注:通常情况下,我们不特别设置GOBIN,让它放在GOPATH/bin下就好。同时为了让系统全局识别可执行文件,还需要将GOPATH/bin放到环境变量中。
# 将GOPATH/bin添加到PATH系统环境变量中
export PATH=$GOPATH/bin:$PATH
注:坑点
go get
或go install
安装的bin文件默认是放在系统环境GOPATH/bin下。"go.toolsGopath": "系统环境GOPATH" // 系统环境GOPATH/bin作为插件识别路径
#vscode的go插件安装
vscode默认会提示安装缺少的插件,但有些插件需要,需要手动安装。
不需要的可直接go get,否则需要手动下载对应的插件包,放到系统GOPATH/src下,并建立对应的目录结构,执行go install。
go install github.com/nsf/gocode
最新使用:go install github.com/mdempsky/gocode
go install github.com/rogpeppe/godef
go install github.com/zmb3/gogetdoc
go install github.com/golang/lint/golint
go install github.com/lukehoban/go-outline
go install sourcegraph.com/sqs/goreturns
go install golang.org/x/tools/cmd/gorename
go install github.com/tpng/gopkgs
go install github.com/newhook/go-symbols
go install github.com/cweill/gotests/...
go install golang.org/x/tools/cmd/guru
//如果需要在vscode中调试go程序,需要下载安装dlv
go install github.com/derekparker/delve/cmd/dlv
至此属于go的vscode环境设置完成。
go.mod指定的依赖,将会下载到GOPATH下的pkg文件中。
但是,并不会被vscode自动识别。
vscode识别的本质是.a文件,去项目空间的pkg文件中会发现,非gomod的项目编译后会产生.a文件,这是提示的根源。
所以方式为:手动生成.a文件即可,可以包一个脚本去手动跑一下生成.a文件,再回到vscode中发现就能识别了。
# 参考样例shell
#!/bin/bash
set -e
cd $GOPATH/../order2 # 前往自己的项目空间
DIR=`pwd` # 记录下项目空间path地址
pkgDir=$DIR/pkg/darwin_amd64/order # 记录项目空间的pkg地址,后面用于生成.a文件是指定输出目录从这里开始
echo $DIR
cd src/order # 进入到src下的代码包
go build -o $pkgDir/handlers/config.a ./handlers/config # 将handlers包下的config子包生成config.a文件放入到pkg下的handlers包下