前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go开发使用VSCode完全配置指南

Go开发使用VSCode完全配置指南

作者头像
林小帅
修改2020-03-18 18:31:12
7.9K0
修改2020-03-18 18:31:12
举报
文章被收录于专栏:林小帅的专栏

近期和朋友合作完成一个项目,后端使用 Golang 来进行编写。那么我又把 Golang 重新捣鼓起来了,然后看了一下文件记录,都一年多没有写了。

看了下 Golang 社区发现 都更新到 1.13.8 版本了,我的还是 1.11.2 版本。所以又把之前的配置记录翻了出来。等我全部配好之后发现和一年前差别有点大,多了大概8个模块,语法提示、模块支持、引用追踪、跳转定义、跳转实现、自动导入管理等。

这个过程也花了点时间,也踩了一点坑,比如一些模块只支持 x64 版本,一些模块无法正常使用 go get 等。

好了,废话不多说,直接进入正题。

01 - 系统环境

系统/用户环境变量

  • GOROOT Go 源码存放目录,如果是 msi 安装包则默认为 c:/go。
  • GOPATH Go 项目/工程的工作区,它包含 3 个主要目录(目录名均为小写)
    • bin 编译/构建后,可执行文件目录。(Executable File)
    • pkg 归档文件目录。(Archive File)
    • src 项目/工程的源码文件目录。(Source File)
  • GOCACHE Go 命令将在其中存储缓存信息以供将来生成时重复使用的目录。
  • GOTMPDIR Go 命令将在其中写入临时源文件、软件包和二进制文件的目录。

这里就不重复说明如何配置 Go 开发环境了。

如果不太了解则可以参考:【Golang】学习Golang基础入门

02 - 开发支持环境

VS Code 开发环境所需支持模块,全部安装完成会生成 17 个可执行文件。(这里以 Windows 为例)

golang.org/x/

需要放在 %GOPATH%/src/golang.org/x/ 目录下。

分别将支持包 clone 下来。

代码语言:javascript
复制
git clone https://github.com/golang/tools.git (工具集以及包源代码)
git clone https://github.com/golang/lint.git (lint 大家都不陌生了)
git clone https://github.com/golang/mod.git (mod 模块支持)
git clone https://github.com/golang/xerrors.git (错误值转换包)

go install

需要手动进行安装来获取支持模块。在 %GOPATH% 下执行。

代码语言:javascript
复制
go install golang.org/x/lint/golint
go install golang.org/x/tools/cmd/guru
go install golang.org/x/tools/cmd/gorename

其他包 (install || import)

需要 install 或者 import 来进行使用,但更推荐使用 install 方式。安装方式同上。

代码语言:javascript
复制
git clone https://github.com/golang/net.git (网络包)
git clone https://github.com/golang/sync.git (同步/原子包)
git clone https://github.com/golang/crypto.git (加密包)
git clone https://github.com/golang/debug.git (debug 工具包)
git clone https://github.com/golang/oauth2.git (oauth2 认证包)
git clone https://github.com/golang/protobuf.git (protobuf 协议包)

以上为额外的且常用的一些功能的源码扩展包,如有需要则可以考虑使用,当然也可以使用第三方实现的包。

github.com/

需要放在 %GOPATH%/src/github.com/ 目录下。可直接通过 go get 方式安装

代码语言:javascript
复制
go get -u -v github.com/uudashr/gopkgs/cmd/gopkgs
go get -u -v github.com/ramya-rao-a/go-outline
go get -u -v github.com/rogpeppe/godef
go get -u -v github.com/godoctor/godoctor
go get -u -v github.com/acroca/go-symbols
go get -u -v github.com/fatih/gomodifytags
go get -u -v github.com/haya14busa/goplay/cmd/goplay
go get -u -v github.com/davidrjenni/reftools/cmd/fillstruct
go get -u -v github.com/cweill/gotests/...

无法正常使用 go get 安装时使用 clone 并通过 go install 方式安装,注意要在 %GOPATH% 下使用命令。

代码语言:javascript
复制
go get -u -v github.com/sqs/goreturns (无法正常安装时使用以下命令)
git clone https://github.com/sqs/goreturns.git
go install github.com/sqs/goreturns.git
go get -u -v github.com/josharian/impl (无法正常安装时使用以下命令)
git clone https://github.com/josharian/impl.git 
go install github.com/josharian/impl (该支持模块只支持 x64 版本,千万注意系统版本和 Golang 版本)
go get -u -v github.com/go-delve/delve/cmd/dlv (无法正常安装时使用以下命令)
git clone https://github.com/go-delve/delve.git (go-delve 目录需要手动创建,然后将 delve 放进去)
go install github.com/go-delve/delve/cmd/dlv

* dlv 比较重要,如果是 x64 系统的还是建议安装此模块,此模块可以通过开发工具或编辑器工具来直接 debug 调试 go 代码。

gocode

代码语言:javascript
复制
go 语法与自动补全,gocode-gomod 需要使用 VS Code 提示安装完成。
https://github.com/stamblerre/gocode.git (支持模块,目前该模块有问题,不建议使用)
go get -u -v github.com/stamblerre/gocode
https://github.com/mdempsky/gocode.git (Go > 1.8 不支持模块)
go get -u -v github.com/mdempsky/gocode
https://github.com/nsf/gocode.git (旧版本,且不再维护)
go get -u -v github.com/nsf/gocode

03 - VS Code 配置

VS Code 配置需要修改一下配置,然后这些模块就可以发挥全部功能了。

文件 -> 首选项 -> 设置 -> settings.json

新增如下内容

代码语言:javascript
复制
{
 "go.buildOnSave": "workspace",
 "go.lintOnSave": "package",
 "go.vetOnSave": "workspace",
 "go.coverOnSave": false,
    "go.lintTool": "golint",
    "go.useCodeSnippetsOnFunctionSuggestWithoutType": true,
 "go.useCodeSnippetsOnFunctionSuggest": true,
 "go.autocompleteUnimportedPackages": true,
 "go.gocodePackageLookupMode": "go",
 "go.inferGopath": true,
 "go.docsTool": "gogetdoc",
 "go.formatTool": "goreturns",
}

以上是我自己用得比较舒服的配置方案,当然各位小伙伴也可以修改为自己觉得舒服的配置,例如在配置中搜索 go.docsTool 就可以看到该配置的值有哪些,然后自己尝试即可。

全部安装完成会在 %GOPATH%/bin 目录下,那么最终的 17 个模块为:

dlv.exe gomodifytags.exe

fillstruct.exe gopkgs.exe

go-outline.exe goplay.exe

go-symbols.exe gorename.exe

gocode-gomod.exe goreturns.exe

gocode.exe gotests.exe

godef.exe guru.exe(不推荐)

godoctor.exe(不推荐) impl.exe

golint.exe

补充内容

也是近期写代码时候发现的问题:

1. guru 和 gogetdoc 都是代码描述提示,建议使用 gogetdoc

2. godoctor 不再更新可以不考虑安装使用,可替代是 golint

3. goimports 和 goreturns 是格式化和包引用管理,建议使用 goreturns

4. github.com/stamblerre/gocode 这个支持 gocode mod 的包有 Bug 牵引过多资源非常卡,不要安装使用!!!

如果是 go mod 模式开发推荐使用 gopls!!!,VS Code 插件发现 go 项目使用了 mod 模式后会提示你安装。

版权声明:

本文版权属于作者 林小帅,未经授权不得转载及二次修改。

转载或合作请在后台留言及联系方式。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 异域传真 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01 - 系统环境
  • 02 - 开发支持环境
    • golang.org/x/
      • go install
        • 其他包 (install || import)
          • github.com/
            • gocode
            • 补充内容
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档