600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 使用 VS Code 快速搭建 Golang 开发环境

使用 VS Code 快速搭建 Golang 开发环境

时间:2019-12-22 08:44:51

相关推荐

使用 VS Code 快速搭建 Golang 开发环境

刚开始接触 Golang 时使用的是 Eclipse + Goclipse 开发环境,但是你懂的,Eclipse的体量有点大,当有一个非常好的 idea 时 Launch and Create the project 的时间足以让灵感飞走了,寻找一款轻量级又耐用的 golang 款 IDE 一直潜伏在心里。第一次接触到 VS Code 时是一个演讲视频使用 VS code 进行 Python 快速开发,于是下载下来,发现竟然还有 Go 这个插件,从此便爱不释手。这货和 Visual Studio 虽然出自同门,但走的和他哥完完全全是两条路,这家伙是一个狂野的,细腻的,快速迭代的,社区化运营的开放性IDE。

安装和启动 VS Code 可以根据自己的操作系统平台分别下载,成功的安装 Go 插件需要一个科学的网络环境,具体配置可以参考 GoGetPorxyConfig . Linux 和 MacOS 下 Shell 的代理设置比较容易,如果在 Windows 环境下可以参考一下这个 Repo 里的 proxy-config 文件,通过 PowerShell 实现 Shell 的代理切换。

安装 Golang 运行时 是必须的,具体的安装和设置可以参考 官方文档,其中 How to Write Go Code 可以详细阅读以下,毕竟Golang作为一种完全开源的语言,代码目录的组织方式可能会和传统语言有点区别。GOROOT 和 GOPATH 的环境变量需要设置,同时需要将 GOROOT/bin 和 GOPATH/bin 加入到 PATH 变量中,并且我们的开发目录将来也会包含在 GOPATH 中,和其他第三方应用放在一起,代码的索引方式是通过代码的远程 Repo 地址来工作的,也就是说想要开发 Golang 程序,你需要先有一个程序使用者可以访问到的 Repo 才行。

先大体了解以下 VS Code,总结了一下一个 IDE 的基本功能大概包括:

Linting,Debugging (multi-threaded, remote),Intellisense,Code Formatting,Refactoring,Unit Tests,Snippets, and more.

一般的IDE都是定义框架然后通过插件的形式支持各种语言, VS Code 也不例外,每种语言也都只是提供了一个基本运行时(Runtime),IDE的功能也需要第三方去实现,比如 Pyhon 中 代码检查可以选择 Pylint 或者 Flake8,代码格式化可以选择 Autopep8 或者 Yapf . 同样,Golang 虽然是开箱即用的语言,但是想要写出规范的代码还是需要很多第三方的代码工具来协助的。下载安装并运行 VS Code 后,使用 Ctrl + Shift + x 快捷键 进入插件管理窗口 输入 “Go” ,搜索结果中 作者为 lukehoban 的插件就是比较推荐的 Go 插件, 安装后即可使用,插件的 repo /Microsoft/vscode-go

Go 插件列出了实现代码编辑功能用到的第三方应用:

Completion Lists (using gocode)
Signature Help (using gogetdoc or godef+godoc)SnippetsQuick Info (using gogetdoc or godef+godoc)Goto Definition (using gogetdoc or godef+godoc)Find References (using guru)Find implementations (using guru)References CodeLensFile outline (using go-outline)Workspace symbol search (using go-symbols)Rename (using gorename. Note: For Undo after rename to work in Windows you need to have diff tool in your path)Build-on-save (using go build and go test)Lint-on-save (using golint or gometalinter)Format on save as well as format manually (using goreturns or goimports or gofmt)Generate unit tests skeleton (using gotests)Add Imports (using gopkgs)Add/Remove Tags on struct fields (using gomodifytags)Semantic/Syntactic error reporting as you type (using gotype-live)Run Tests under the cursor, in current file, in current package, in the whole workspace (using go test)Show code coverageGenerate method stubs for interfaces (using impl)Fill struct literals with default values (using fillstruct)[partially implemented] Debugging (using delve)Upload to the Go Playground (using goplay)

具体包括:

// Tools used explicitly by the basic features of the extensionconst importantTools = ['gocode','gopkgs','go-outline','go-symbols','guru','gorename','godef','godoc','gogetdoc','goreturns','goimports','golint','gometalinter','megacheck','dlv'];

检索它所用第三方插件的下载地址:

/Microsoft/vscode-go/blob/master/src/goInstallTools.ts

对于强迫症患者,可以使用下面的命令一次性把第三方应用全部安装(一共22个应用,前15个为 Tools used explicitly by the basic features of the extension ):

go get -u -v /nsf/gocodego get -u -v /uudashr/gopkgs/cmd/gopkgsgo get -u -v /ramya-rao-a/go-outlinego get -u -v /acroca/go-symbolsgo get -u -v /x/tools/cmd/gurugo get -u -v /x/tools/cmd/gorenamego get -u -v /rogpeppe/godefgo get -u -v /x/tools/cmd/godocgo get -u -v /zmb3/gogetdocgo get -u -v /sqs/goreturnsgo get -u -v /x/tools/cmd/goimportsgo get -u -v /golang/lint/golintgo get -u -v /alecthomas/gometalintergo get -u -v honnef.co/go/tools/...go get -u -v /derekparker/delve/cmd/dlvgo get -u -v /haya14busa/goplay/cmd/goplaygo get -u -v /josharian/implgo get -u -v /tylerb/gotype-livego get -u -v /cweill/gotests/...go get -u -v /sourcegraph/go-langservergo get -u -v /davidrjenni/reftools/cmd/fillstructgo get -u -v /fatih/gomodifytags

再安装go vendor 机制 依赖管理工具 glide , Godep 和 govendor :

curl https://glide.sh/get | shgo get -u -v /golang/dep/cmd/depgo get -u /kardianos/govendor

这三种 vendor 管理工具对应的配置文件分别为:

glide -> glide.ymlGodep -> Gopkg.tomlgovendor -> vendor.json

为了方便将当前工作目录加入到 $GOPATH 中,将下面指令加入到 ~/.bashrc 文件中:

# set $PWD append to $GOPATHgopath-pwd(){if [[ $GOPATH =~ .*$PWD.* ]];thenecho "currnet dir is already in GOPATH"elseexport GOPATH=$GOPATH:$PWDecho "fininsh setting $PWD in GOPATH"fi}export -f gopath-pwd

如果是 MacOS 系统,为了方便命令行启动 VS Code 需要创建一个软连接:

ln -s /Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code ~/bin/code

如果工程目录不在 $GOPATH 中,需要在 VS Code 中使用

Ctrl+Shift+P -> Open workspace settings 中添加一下信息

"go.inferGopath": true,

保存配置后,VS Code 会将当前目录附加到 $GOPATH 中。

安装完成后,可以配置 launch.json (which is where VS Code stores the debugger configurations)

文件,使用 Ctrl+Shift+D 进入调试视图,选择一个调试配置,然后 F5 快捷键 调试 Golang 程序,可以使用 Ctrl + p 中输入 “debug add config” 根据向导来添加使用于 Golang 的 Configuration .

描述一下 VS Code 的 workspace 的概念。VS Code 定义于一个轻量级的 IDE ,连 workspace 也是轻量级的,它的 workspace 就是一个 json 配置文件,里面记录了这个 workspace 包含的 folders 和 settings

{"folders": [{"path": "xxxxxx"},{"path": "yyyyyy"}],"settings": {}}

只要保存一个 workspace 文件就可以同时打开多个目录,非常方便。同时 VS Code 的组织层次为:

User -> Workspace -> Floder 三个级别,可以根据自己的实际需求灵活配置。

最后再描述一下 VS Code 的 tasks 的概念。有很多工具可以自动执行任务,如 linting, building, packaging, testing or deploying software systems,这些工具大部分都是从命令行运行的,并在内部软件开发循环(编辑,编译,测试和调试)内外自动执行作业。鉴于它们在开发生命周期中的重要性,能够在VS Code中运行工具并分析其结果非常有帮助。因此在目录下创建 tasks.json 文件,自定义任务可以有效的提高开发效率。

下面自定义了一个 编译当前打开文件的 tasks:

{// See /fwlink/?LinkId=733558// for the documentation about the tasks.json format"version": "2.0.0","tasks": [{"label": "go-build-current","type": "shell","command": "go","args": ["build","${relativeFile}",],"group": {"kind": "build","isDefault": true}},]}

参考文档:

/golang/go/wiki

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。