前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >再记录一下vscode配置golang开发的一些注意事项

再记录一下vscode配置golang开发的一些注意事项

作者头像
xiny120
发布2019-07-26 14:59:50
4.1K0
发布2019-07-26 14:59:50
举报
文章被收录于专栏:毛毛v5毛毛v5

M$推出vscode之后,感觉世界真美好。于是从liteide转到vscode了。但是golang组织代码的目录管理这尿性比较奇葩。常常把自己搞得五迷三道的。有时候正常,有时候又掉链子。现在记录一下一些注意事项。 windows下的vscode,首先安装golang到 c:/Go 也就是环境变量GOROOT=c:/Go,然后指定GOPATH=c:/Go/gopath 这个目录自己建立。环境变量里面GOROOT和GOPATH只留下系统变量,用户变量中的GOROOT,GOPATH删除。不然鬼知道会搞出神马冲突,不划算,环境变量设置好之后,一定要重新自动下电脑,不然有时候vscode读不到最新环境变量设置。之所以GOPATH指定一个专用目录,而不是用户目录(类似 C:\Users\Administrator\go),主要因为项目如果发布到git,自己在多台电脑上编译代码的话。比较麻烦所以统一指定固定目录。 然后vscode安装微软的ms-vscode.go插件。穿好后用workspace来组织golang代码。 目录结构大致如下:

代码语言:javascript
复制
G:\DEVTOOLS\project\git\MonsterLive\WebSocketServerGo\MonsterShowMain>dir
 驱动器 G 中的卷没有标签。
 卷的序列号是 CC73-754C

 G:\DEVTOOLS\project\git\MonsterLive\WebSocketServerGo\MonsterShowMain 的目录

2019/07/25  09:12    <DIR>          .
2019/07/25  09:12    <DIR>          ..
2019/07/25  09:02    <DIR>          .vscode
2019/07/25  09:12               982 MonsterShowMain.code-workspace
2019/07/25  09:02    <DIR>          src
               1 个文件            982 字节
               4 个目录  4,248,682,496 可用字节

.vscode是vscode的配置文件所在目录。MonsterShowMain.code-workspace文件是vscode的workspace文件。里面可以设置本工程的一些环境变量。其内容大致如下:

代码语言:javascript
复制
{
    "folders": [
        {
            "path": "."
        }
    ],

    "settings": {
        "go.inferGopath": true,
        "go.buildOnSave": "workspace",
        "go.lintOnSave": "package",
        "go.vetOnSave": "package",
        "go.buildTags": "",
        "go.buildFlags": [],
        "go.lintFlags": [],
        "go.vetFlags": [],
        "go.coverOnSave": false,
        "go.useCodeSnippetsOnFunctionSuggest": false,
        "go.formatTool": "goreturns",
        "go.goroot": "C:/Go/",
        "go.gopath": "C:/Go/gopath/go/",
        "go.toolsGopath":"C:/Go/gopath/go/",
        "go.gocodeAutoBuild": false,
        "go.useLanguageServer": true,
        "go.alternateTools": {
          "go-langserver": "gopls", 
        },
        "go.languageServerExperimentalFeatures": {
          "format": true,
          "autoComplete": true
        },
        "[go]": {
            "editor.codeActionsOnSave": {
                "source.organizeImports": true
            },
        }



    }   
}

其中的:

代码语言:javascript
复制
"go.inferGopath": true,
"go.goroot": "C:/Go/",
"go.gopath": "C:/Go/gopath/go/",
"go.toolsGopath":"C:/Go/gopath/go/",

这四行相当重要。vscode的调试菜单启动时读取的是windows系统的环境变量中的GOPATH, 而项目中的编译,智能提示,可以用上面四行设置中的路径覆盖环境变量。 其中 go.toolsGopath 也设置上比较好。不然会在本地项目中创建bin目录,麻烦。指定一个固定位置,多个项目可以共享这些工具。这些工具就是

代码语言:javascript
复制
Installing 12 tools at C:/Go/gopath/go/\bin
  gocode
  gopkgs
  go-outline
  go-symbols
  guru
  gorename
  dlv
  gocode-gomod
  godef
  goreturns
  golint
  gopls

Installing github.com/mdempsky/gocode SUCCEEDED
Installing github.com/uudashr/gopkgs/cmd/gopkgs SUCCEEDED
Installing github.com/ramya-rao-a/go-outline SUCCEEDED
Installing github.com/acroca/go-symbols SUCCEEDED
Installing golang.org/x/tools/cmd/guru SUCCEEDED
Installing golang.org/x/tools/cmd/gorename SUCCEEDED
Installing github.com/go-delve/delve/cmd/dlv SUCCEEDED
Installing github.com/stamblerre/gocode SUCCEEDED
Installing github.com/rogpeppe/godef SUCCEEDED
Installing github.com/sqs/goreturns SUCCEEDED
Installing golang.org/x/lint/golint FAILED

这些鸟东西。

"go.inferGopath": true 的作用是把本地项目的src也包含到gopath中,但是不污染全局gopath,大概就是这个意思。

然后.vscode目录下面有个launch.json,如下:

代码语言:javascript
复制
G:\DEVTOOLS\project\git\MonsterLive\WebSocketServerGo\MonsterShowMain\.vscode>dir
 驱动器 G 中的卷没有标签。
 卷的序列号是 CC73-754C

 G:\DEVTOOLS\project\git\MonsterLive\WebSocketServerGo\MonsterShowMain\.vscode 的目录

2019/07/25  09:02    <DIR>          .
2019/07/25  09:02    <DIR>          ..
2019/07/25  09:02               626 launch.json
               1 个文件            626 字节
               2 个目录  4,248,682,496 可用字节

G:\DEVTOOLS\project\git\MonsterLive\WebSocketServerGo\MonsterShowMain\.vscode>

这个文件的主要作用是让vscode的调试和运行菜单关联到运行的代码,其内容如下:

代码语言:javascript
复制
{
    // 使用 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/main.go",
            "env": {
                //"GOPATH":"C:/Go/gopath/go/",
                //"GOROOT":"C:/Go/",

            },
            "args": []
        }
    ]
}

其中 program 就是指定你要自动的主程序源代码。 env里面的GOPATH,GOROOT,不要了,要了会又冲突,造成错误。 检查当前vscode工程的GOPATH路径的命令 -》vscode 菜单 view -> command palette -> GO:current GOPATH

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.07.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档