目录

【Golang】vscode 设置 go 开发环境

警告
本文最后更新于 2020-11-01,文中内容可能已过时。

步骤

1. 始

Golang 语言开发选择一款合适的编辑器,能加速你敲字的灵感,这里推荐微软的 Visual Studio Code,简称 vscode。

2. 安装 go 插件

首先需要安装 go 语言插件,在 vscode 扩展中搜索 “go”,如下图,下载安装go插件

https://cdn.jsdelivr.net/gh/ZhaoUncle/image@main/blog/image-20201101170130488.png

https://cdn.jsdelivr.net/gh/ZhaoUncle/image@main/blog/image-20201101170447244.png

3. 设置 GOPROXY

如果想要 vscode 在 Go语言开发的时候为我们提供诸如代码提示、代码自动补全等功能,需要安装 go tools,但是安装 tools 需要设置 goproxy,否则会因为网络问题无法下载 tools 工具。

在此之前请先设置GOPROXY,打开终端执行以下命令:

1
go env -w GOPROXY=https://goproxy.cn,direct

4. 安装 Go语言开发工具包

安装 Golang Tools,按下 Ctrl/Cmd+P,输入> Go: Install/Update Tools,然后回车,选择你要安装的 tools 插件

https://cdn.jsdelivr.net/gh/ZhaoUncle/image@main/blog/image-20201101172850059.png

https://cdn.jsdelivr.net/gh/ZhaoUncle/image@main/blog/image-20201101173030140.png

5. 插件介绍

tools 名称 用途
gocode github.com/mdempsky/gocode 代码自动完成
gopkgs github.com/uudashr/gopkgs/v2/cmd/gopkgs 该工具为未导入的软件包提供自动补全功能
go-outline github.com/ramya-rao-a/go-outline 此工具提供了文档大纲功能以及当前文件功能中的转到符号
go-symbols github.com/acroca/go-symbols 此工具提供了工作空间中的转到符号功能。
guru golang.org/x/tools/cmd/guru 该工具提供查找参考查找接口实现功能。
它也可用于通过设置提供转到定义"go.docsTool"
gorename golang.org/x/tools/cmd/gorename 此工具提供了重命名符号功能。
gotests github.com/cweill/gotests/… 该工具为Go: Generate Unit Tests命令集提供支持。
gomodifytags github.com/fatih/gomodifytags 该工具支持Go: Add Tags to Struct FieldsGo: Remove Tags From Struct Fields命令。
impl github.com/josharian/impl 该工具为Go: Generate Interface Stubs命令提供支持。
fillstruct github.com/davidrjenni/reftools/cmd/fillstruct 该工具提供了对Go: Fill struct命令的支持。
goplay github.com/haya14busa/goplay/cmd/goplay 该工具为Go: Run on Go Playground命令提供支持。
godoctor github.com/godoctor/godoctor 该工具提供了重构功能。
它不支持Go模块,因此我们希望gopls它将提供此功能(golang / go#37170)。
dlv github.com/go-delve/delve/cmd/dlv 这是Go语言的调试器。它用于提供此扩展的调试功能。
gocode-gomod github.com/stamblerre/gocode
goreturns github.com/sqs/goreturns
golint golang.org/x/lint/golint

6. 打开vscode设置

https://cdn.jsdelivr.net/gh/ZhaoUncle/image@main/blog/image-20201101174435968.png

https://cdn.jsdelivr.net/gh/ZhaoUncle/image@main/blog/image-20201101174527975.png

7. settings.json 配置

1
2
3
4
5
6
7
  "go.inferGopath": true,
  "go.autocompleteUnimportedPackages": true,
  "go.gocodePackageLookupMode": "go",
  "go.gotoSymbol.includeImports": true,
  "go.useCodeSnippetsOnFunctionSuggest": true,
  "go.useCodeSnippetsOnFunctionSuggestWithoutType": true,
  "go.docsTool": "guru",

https://cdn.jsdelivr.net/gh/ZhaoUncle/image@main/blog/image-20201101174633072.png

8. settings.json 参数介绍:

8.1 跳转到定义

  • go.docsTools:这里有三个选项,默认使用 gogetdoc,不知为何我这里选择之后无法使用 ctrl/cmd +鼠标左键点击跳转函数或者源码,于是我选择了 guru

https://cdn.jsdelivr.net/gh/ZhaoUncle/image@main/blog/image-20201101175010106.png

9. 效果

https://zhaouncle.com/image/blog/video/QQ20201101-181724-HD.gif

参考链接:

https://github.com/microsoft/vscode-go

https://github.com/golang/vscode-go

https://github.com/golang/vscode-go/blob/master/docs/tools.md

https://golang.google.cn/