深入研究 Visual Studio Code for Golang
来源:互联网 发布:网络摄像头哪个牌子好 编辑:程序博客网 时间:2024/05/17 22:41
前提
Visual Studio Code (以下簡稱: VS Code) 是微軟的跨平台的開源 IDE ,目前已經進入了 1.0 的正式版本. 由於功能強大,預設就能 debug python, node.js 與 java script .玩了一兩天,將所有與 Golang 相關常用到的情境加以記錄下來,希望能夠幫助到某些人.
阿鬼,你還是講英文吧!!
第一次安裝 VS Code,會發現他有一個相當”貼心”的功能.就是他會幫你的 IDE UI 選取到中文介面. 貼首先,先修改 locale 將”中文” VS Code 改回英文介面:
- 按下
F1
點選 “設定語言” - locale 改成 “en-US”
- 重啟 VS Code
常用熱鍵:
- (
F1
或是Shift + cmd + p
) command palette:- 呼叫出命令列,可以跑一些 IDE 的指令:比如說安裝 extension 那類的.
- (
F2
) Rename (gorename
):- 可以快速幫你把整個專案裡面的變數修改名稱,就像是 VS 跟 XCode 裡面的 Refactor.
- (
F5
) Debug :- 直接幫你 compile 目前的專案,並且直接進入 debug 模式.就像是 VS 一樣,使用起來相當的方便. 並且可以透過以下的 hot-key 來進行 debug :
F5
continueF10
step overF11
step intoSHIFT+F11
step out (目前 delve 尚未支援)SHIFT+F5
stop
- 直接幫你 compile 目前的專案,並且直接進入 debug 模式.就像是 VS 一樣,使用起來相當的方便. 並且可以透過以下的 hot-key 來進行 debug :
- (
F8
) Go to Next Error or Warning:- 可以快速切到如果有任何 error 或是 warning 的部分. 要切換到前一個,可以試著 (
Shift + F8
)
- 可以快速切到如果有任何 error 或是 warning 的部分. 要切換到前一個,可以試著 (
- (
F12
) Go to Definition (godef
):- 跳到 function 定義的地方,就如同 VS 裡面的
F12
是相同的.
- 跳到 function 定義的地方,就如同 VS 裡面的
- (
Shift+F12
) Show References (guru
(俗稱的oracle
) ):- 跳到參考的地方,跟
F12
是成對的. 當你跳到 function 定義的地方,可以透過這個跳回呼叫 function 的地方.
- 跳到參考的地方,跟
- (
Shift+F12
) Show References (guru
):- 跳到參考的地方,跟
F12
是成對的. 當你跳到 function 定義的地方,可以透過這個跳回呼叫 function 的地方.
- 跳到參考的地方,跟
- (
Cmd + =
) 縮放整個畫面:- Zoom in :
Cmd + =
, Zoom out:Cmd + -
- Zoom in :
- (
Cmd + Shift + n
) 開啟新的 IDE- 當你要開發多個專案(應該超容易使用到),就必需要使用這個 hotkey .
自訂 task 部分 (for build, test, install)
以下修改的 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", "args": [ "-v", "./..."], "isTestCommand": true } ]}
更多 task 相關設定可以參考官方文件.
就可以執行以下的部分:
- (
Shift+cmd+B
) Go build:- 編譯當下這個專案全部的檔案.
- (
Shift+cmd+T
) Go test:- 跑當下這個專案的
go test
.
- 跑當下這個專案的
更多與 Golang 熱鍵有關的問題,可以比對 keymap 跟 vs-code 的 tools
解決 build error
如果跑 go build
發現有一堆的 error 在顯示視窗,該如何快速切換到錯誤的地方? 這時候可以按下F8
常用情境
注意: 關於 debug 設定 launch.json
是跟著專案走,每個專案都得設定一次.
Debugging Application
當你透過 folder 打開你的專案目錄. 然後直接按下 F5
,就是那麼簡單. 這時候會先跳出設定選項launch.json
要填.你如果要 debugging application 就直接存擋關閉就好了.
記得要用滑鼠加上一些 breakpoint ,並且用 F10
來做簡單的 step over debugging. 其他關於 debugging 視窗的部分就跟 Visual Stido 很像就不多加解釋.
Debugging “go test”
go test
是 Golang 內建的 unit testing 的方式,所以很多 package 其實可以很快速地將所有的 unit testing 完成即可. 就不需要很麻煩的寫出相關的 CLI 就可以完成所需要的測試單元. 要來 debuggo 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
: 僅僅跑目前檔案的測試項目.
Debugging with attach
目前還在測試,感覺我手邊的 delve 在 attach 方面有些問題.
關於要用 vs code debugging CLI , 想要跑 vs code 去 attach 看起來有點問題.. 回過頭來說 delve debug 看起來對於bufio.scanner
會跳掉… 又得花時間去看 delve. gdb 就沒這個問題. 持續觀察與更新.
心得:
目前還在持續使用,雖然可以將 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 造成的問題.
- 深入研究 Visual Studio Code for Golang
- [Golang] 深入研究 Visual Studio Code for Golang
- Go for Visual Studio Code
- 在Visual Studio Code配置GoLang开发环境
- 用Visual Studio Code配置GoLang开发环境教程
- 在Visual Studio Code配置GoLang开发环境
- MSSQL Extension For Visual Studio Code
- The Code Project Add-In for Visual Studio 2008
- (Visual Studio)Part 4: Setting up Code for the Debugger
- Rich Go language support for Visual Studio Code
- Mac OS X下Visual Studio Code搭建Golang(Go语言)开发环境
- Visual Studio Code
- visual studio code
- visual studio code基础
- Visual Studio Code 笔记
- Visual Studio Code
- visual studio code
- Visual Studio Code
- ELK小记(一):搭建ELK日志系统
- 简单的java程序
- Java中接口与抽象类比较
- 【LeetCode】Invert Binary Tree 解题报告
- eclipse设置代理
- 深入研究 Visual Studio Code for Golang
- android apk编译过程(1)
- hdu3400 _嵌套三分 三分求极限
- hdu1698 Just a Hook(成段更新+懒惰标记)
- fnmatch模块的使用
- 最大映射
- poj 3608(旋转卡壳求解两凸包之间的最短距离)
- 字典树
- hdoj1025Constructing Roads In JGShining's Kingdom【LIS】