vscode以良好的兼容性進來收到追捧。整個vscode執行效率比基於java的ide效率又高。一直用liteide來編寫golang,但是liteide調試時斷點不能實時增刪,每次增刪斷點,重新運行調試纔有用,而且變量窗口觀察 變量又不方便。於是乎開始琢磨用vscode。偶然看到一個大神發佈的一個vscode包含了golang環境。擴展的名字是:VSCode Essentials
# VSCode Essentials
Extension pack that includes all the tools I use daily as a developer.
## Extensions Included
* [Angular Language Service](https://marketplace.visualstudio.com/items?itemName=Angular.ng-template "https://marketplace.visualstudio.com/items?itemName=Angular.ng-template")
* [Angular v6 Snippets by John Papa](https://marketplace.visualstudio.com/items?itemName=johnpapa.Angular2 "https://marketplace.visualstudio.com/items?itemName=johnpapa.Angular2")
* [angular2-inline by Nate Wallace](https://marketplace.visualstudio.com/items?itemName=natewallace.angular2-inline "https://marketplace.visualstudio.com/items?itemName=natewallace.angular2-inline")
* [Atom One Light Theme by Mahmoud Ali](https://marketplace.visualstudio.com/items?itemName=akamud.vscode-theme-onelight "https://marketplace.visualstudio.com/items?itemName=akamud.vscode-theme-onelight")
* [Docker](https://marketplace.visualstudio.com/items?itemName=PeterJausovec.vscode-docker "https://marketplace.visualstudio.com/items?itemName=PeterJausovec.vscode-docker")
* [EditorConfig](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig "https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig")
* [ESLint by Dirk Baeumer](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint "https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint")
* [Go](https://marketplace.visualstudio.com/items?itemName=ms-vscode.Go "https://marketplace.visualstudio.com/items?itemName=ms-vscode.Go")
* [NativeScript](https://marketplace.visualstudio.com/items?itemName=Telerik.nativescript "https://marketplace.visualstudio.com/items?itemName=Telerik.nativescript")
* [nginx.conf by shanoor](https://marketplace.visualstudio.com/items?itemName=shanoor.vscode-nginx "https://marketplace.visualstudio.com/items?itemName=shanoor.vscode-nginx")
* [npm by egamma](https://marketplace.visualstudio.com/items?itemName=eg2.vscode-npm-script "https://marketplace.visualstudio.com/items?itemName=eg2.vscode-npm-script")
* [One Dark Theme by Joshua Azemoh](https://marketplace.visualstudio.com/items?itemName=azemoh.theme-onedark "https://marketplace.visualstudio.com/items?itemName=azemoh.theme-onedark")
* [One Monokai Theme by Joshua Azemoh](https://marketplace.visualstudio.com/items?itemName=azemoh.one-monokai "https://marketplace.visualstudio.com/items?itemName=azemoh.one-monokai")
* [Path Intellisense by Christian Kohler](https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense "https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense")
* [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python "https://marketplace.visualstudio.com/items?itemName=ms-python.python")
* [SVG Viewer by cssho](https://marketplace.visualstudio.com/items?itemName=cssho.vscode-svgviewer "https://marketplace.visualstudio.com/items?itemName=cssho.vscode-svgviewer")
* [TSLint by egamma](https://marketplace.visualstudio.com/items?itemName=eg2.tslint "https://marketplace.visualstudio.com/items?itemName=eg2.tslint")
* [vscode-elixir by Mat McLoughLin](https://marketplace.visualstudio.com/items?itemName=mjmcloug.vscode-elixir "https://marketplace.visualstudio.com/items?itemName=mjmcloug.vscode-elixir")
立馬安裝這個擴展,寫了golang helloworld. OK,一切正常。
但是,一般golang工程,不可能就一個main.go,vscode如何管理golang工程又不得而知,原來用liteide可以編譯調試的工程,放到vscode就不行。後來仔細梳理了一下。終於實現了 vscode全面編譯原來的liteide的golang工程。
一下幾點要注意:
1,golang工程的目錄結構最好要遵守,我的目錄結構如下圖:
2,創建一個工作區文件 aaa.code-workspace,如上圖,放在根目錄,內容如下:
{
"folders": [
{
"path": "H:\\DEVTOOLS\\project\\git\\TntLive\\WebSocketServerGo\\Pic98"
}
],
"settings": {
"go.inferGopath": true,
}
}
3,創建一個launch.json文件(調試菜單,打開配置,就是它),內容如下:
{
// 使用 IntelliSense 瞭解相關屬性。
// 懸停以查看現有屬性的描述。src\Pic98\main.go
// 欲瞭解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${workspaceRoot}/src/Pic98/main.go", // 每次調試啓動的文件
"env": {
"GOPATH":"C:/Users/Administrator/go;${workspaceRoot}", //可以指定gopath
"GOROOT":"C:/go",
},
"args": []
}
]
}
然後把系統環境變量administraor的path的關於go的目錄刪除,只留默認的。path變量必須包含goroot/bin;gopath/bin。
最後就是GOPATH/bin(我的是C:\Users\Administrator\go\bin)目錄下面,最少要有如下11個文件:
目錄: C:\Users\Administrator\go\bin
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2018-08-09 11:05 15160320 dlv.exe
-a---- 2019-05-30 9:17 4235776 go-outline.exe
-a---- 2019-05-30 9:18 4043264 go-symbols.exe
-a---- 2019-05-29 20:18 11576832 gocode.exe
-a---- 2019-05-30 9:31 9161728 godef.exe
-a---- 2018-08-09 14:19 5762048 golint.exe
-a---- 2018-08-09 12:05 5111808 gopkgs.exe
-a---- 2019-01-18 14:17 9914880 gopm.exe
-a---- 2019-05-30 9:30 5974528 gorename.exe
-a---- 2018-08-09 13:57 7139840 goreturns.exe
-a---- 2019-05-30 9:27 8999424 guru.exe
如果沒有就要用go get 安裝;比如安裝 dlv.exe
go get -u github.com/go-delve/delve/cmd/dlv
大功告成,變量,監視,堆棧,斷點,log輸出,應有盡有!爽上天了。