vscode golang详细配置(持续更新)


每次配好后,长时间不用动,下次再配置的时候仍然不熟悉,特此记录以备忘。

直接应用

①gopath系统环境变量设置:

这个设置以后,系统默认的go环境就指定好了,如果不重新指定,则默认识别的都是这里设置的(包括代码提示引用的路径、三方包go get安装的路径)。常用于统一存放第三方包和安装的bin插件。

  • mac系统在~/.bash_profile文件中添加:
# 创建一个global作为默认go项目,用作系统默认go环境,主要用于存放三方包
GOPATH="/Users/shuai/Documents/global"
export GOPATH
export PATH=$GOPATH:$PATH
export PATH=$GOPATH/bin:$PATH
  • windows系统在环境变量中添加:GOPATH新变量,并将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放到环境变量中,也可以不放。
  • vscode环境
    如果vscode不指定go.gopath,则默认使用系统环境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编译生成的bin文件会默认放在GOPATH/bin下,那么如果vscode为每个项目单独指定了(“工作区设置”)自己的“go.gopath”,这就覆盖了系统环境的GOPATH。
  • 而我们命令行中go getgo install安装的bin文件默认是放在系统环境GOPATH/bin下。
  • 因此项目单独设置的“go.gopath”下的bin文件夹下是没有那些在系统环境下已经安装好的bin文件的,于是vscode会提示你当前这个独立设置的项目缺少依赖的第三方包,需要安装。
  • 但其实我们系统环境GOPATH/bin下已经装过了,你可以拷贝到单独项目的gopath/bin下。更简便的做法像上面【直接应用】里做的那样,vscode>用户设置里,设置"go.toolsGopath"即可。
"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环境设置完成。


引入GOMOD的支持

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包下

最新机制:使用官方的语言服务器gopls

VS Code 的设置, 搜索 go.useLanguageServe, 并勾选上。
此后不需要做任何设置,自动提示和跳转(使用了编译标签时不支持)都是ok的。

gomod机制下的包安装:进到go.mod所在的目录,执行go mod tidy。

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值