加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

深入研究 VS Code for Golang

发布时间:2020-12-16 18:28:38 所属栏目:大数据 来源:网络整理
导读:1. 前提 Visual Studio Code (以下简称: VS Code) 是微软的跨平台的开源IDE,目前已经进入了 1.0 的正式版本. 由于功能强大,预设就能 debug python,node.js 和 java script .玩了一两天,将所有与 Golang 相关常用到的情境加以记录下来,希望能够帮助到正

1. 前提

Visual Studio Code (以下简称: VS Code) 是微软的跨平台的开源IDE,目前已经进入了 1.0 的正式版本. 由于功能强大,预设就能 debug python,node.js 和 java script .玩了一两天,将所有与 Golang 相关常用到的情境加以记录下来,希望能够帮助到正在学习的朋友。

2. 语言预定

第一次安裝VS Code,会发现它有一个非常贴心的功能.就是他会把你的IDE UI安装成中文界面. 首先,先修改 locale 将 “中文” VS Code 改回英文界面: 按下 F1键 选择“配置语言”(找不到请使用搜索) locale 改成 “en-US” 重启 VS Code

3. 安装 vscode-go

安裝 VS Code 1.0.0 以上版本 cmd + shift + p Install Extension Go

4. vscode-go 基本配置

cmd +,如果你使用 homebrew 可以设置 "go.goroot": "/usr/local/opt/go/libexec",如果不是,请将该目录指向 $GOROOT

5. 常用快捷键

(F1 或是 Shift + cmd + p / Ctrl + Shift + p) command palette: 打开命令列,可以跑一些 IDE 的指令:比如安装 extension 那类的.

(F2) Rename (gorename): 可以快速帮你把项目里面的文件修改名称,就像是 VS 跟 XCode 里面的 Refactor.

(F5) Debug : 直接帮你 compile 目前的文件,并且直接进入 debug 模式.就像是 VS 一样,使用起来相当方便. 并且可以通过以下的 hot-key 来进行 debug : F5 continue F10 step over F11 step into SHIFT+F11 step out (目前 delve 尚未支持) SHIFT+F5 stop

(F8) Go to Next Error or Warning: 可以快速切到下一个有 error 或是 warning 的部分. 要切换到前一个,可以尝试 (Shift + F8)

(F12) Go to Definition (godef): 跳到 function 定义的地方,就如同 VS 里面的 F12 是相同的.

(Shift+F12) Show References (guru (俗称的 oracle) ): 跳到参考的地方,跟 F12 是成对的. 当你跳到 function 定义的地方,可以通过这个跳回调用 function 的地方.

(Cmd + =) 缩放整个画面: Zoom in : Cmd + (+) / Ctrl + (+) Zoom out: Cmd + (-) / Ctrl + (-)

(Cmd + Shift + n / Ctrl + Shift + n) 打开新的 IDE 当你要开发多个项目时,就必需要使用这个 hotkey .

6. 自定义Task

以下修改的 task.json 是每个项目都需要修改一次.目前该专案打算整合成预设,但是还没有完成 (參考: issue 287,issue 21 )

首先按下 F1 打开出 Tasks: Configure Task Runner .粘贴以下的部分,记得 gopath 要改

{
    "version": "0.1.0","command": "go","isShellCommand": true,"showOutput": "silent","options": {
        "env": {
            "GOPATH": "**YOUR_GO_PATH**"
        }
    },"tasks": [
        {
            "taskName": "install","args": [ "-v","./..."],"isBuildCommand": true
        },{
            "taskName": "test","isTestCommand": true
        }
    ]
}

更多 task 相关设定可以参考官方文件. 就可以执行以下的部分:

(Shift+cmd+B / Ctrl + Shift + b) Go build: 编译当前项目全部文件.

要增加跑 Go Test 的 Keyboard shortcut ,需要通过以下流程: [Code]->[Preference]->[Keyboard Shortcuts] 新增以下的设置.

// Place your key bindings in this file to overwrite the defaults
[
    { "key": "shift+cmd+r","command": "go.test.package" },]
or 
[
    { "key": "ctrl+shift+r",]

你就可以通过 Shift + cmd + r / ctrl + shift + r 来跑 Go Test.

更多和 Golang 热键有关的问题,可以比对 keymap 跟 vs-code 的 tools

7. 解決 build error

如果跑 go build 发现有一堆的 error 显示在窗口,该如何快速切换到错误的地方? 这个时候可以按下 F8

8. 常用情境

注意: 关于 debug 设定 launch.json 是跟着项目走,每个项目都得设定一次.

9. Debugging Application

当你通过 folder 打开你的项目目录. 然后直接按下 F5,就是那么简单. 这時候会先跳出设置选项 launch.json 要填.你如果要 debugging application 就直接保存关闭就好了.

记得要加上一些 breakpoint ,并且用 F10 来做简单的 step over debugging. 其他关于 debugging 窗口的部分就跟 Visual Studio 很像就不多加解释.

10. Debugging “go test”

go test 是 Golang 内置的 unit testing 的方式,所以很多 package 其实可以很快速地将所有的 unit testing 完成即可. 就不需要很麻烦的写出相关的 CLI 就可以完成所需要的单元测试. 要来 debug go test 其实不难,只要依照以下方式即可:

修改 launch.json 将以下参数改掉: "mode" = "debug",改成 "mode" = "test",直接按下 F5 就可以 debugging go test.

当然,你也可以直接选取部分的测试项目,通过 F1 来调用出 command palette 然后直接执行:

Go: Run test at cursor: 仅仅跑目前鼠标 function 的测试项目. Go: Run test at cursor package : 跑目前 package 的测试项目. Go: Run tests in current file: 仅仅跑目前文件的测试项目.

11. Debugging with attach

目前还在测试,感觉我当前环境的 delve 在 attach 方面有些问题. 关于要用 vs code debugging CLI,想要跑 vs code 去 attach 看起来有点问题.. 回过头来说 delve debug 看起来对于 bufio.scanner 会跳掉… 又得花时间去看 delve. gdb 就沒这个问题. 持续观察与更新.

12. 心得

目前还在持续使用,虽然可以将 Python,Node.js 跟 Golang 全部整合在同一个 IDE ,不过因为它是 Project-based 你还是得开很多个 IDE .

优点: 整個 debugging 的实现是相当的惊人,就像是使用 Visual Studio 在 debugging C/C++ 一样. 整合多个程序语言,使用起来可以相当的快速.(当然前提你把他的 keymap 用熟了)

缺点 go build,go install 与 go test 目前都得通过 task 设置的方式,而且是以 Project-based 有点累赘. Debugging CLI with input 看起来有些问题,不过这一点我保留,因为我還还要查看一下是不是 delve 造成的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读