设为首页 收藏本站
查看: 2037|回复: 0

[经验分享] vscode golang配置说明

[复制链接]

尚未签到

发表于 2018-9-20 11:24:29 | 显示全部楼层 |阅读模式
一、vscode-go插件安装


  • go 1.10.2 https://golang.org/dl/ 需要墙
  • vscode 1.23.1 https://code.visualstudio.com/
  • vs插件安装  
    DSC0000.png

二、vscode-go 配置


  • settins.json 基本上不需要配置,用默认值就可以了。如需调整 文件 -->首选项 -->设置 输入go即可查看go相关配置
  

{  "git.ignoreLimitWarning": true,
  //开启自动保存
  "files.autoSave": "onFocusChange",
  "go.buildFlags": [],
  "go.lintFlags": [],
  "go.useCodeSnippetsOnFunctionSuggest": false,
  "[go]": {
  "editor.insertSpaces": false,
  "editor.formatOnSave": true
  },
  "go.formatTool": "goreturns",
  "go.goroot": "C:\\Go",
  "go.gopath": "D:\\GoPath"
  
}
  


  • launch.json配置,文件 -->打开文件 -->(选择GOPATH文件夹)  
    DSC0001.png

  

{  "version": "0.2.0",
  "configurations": [
  {
  "name": "Launch",
  "type": "go",
  "request": "launch",
  "mode": "debug",
  "remotePath": "",
  //"port": 2345,
  //"host": "127.0.0.1",
  "program": "${fileDirname}", //workspaceRoot
  "env": {},
  "args": [],
  "showLog": true
  }
  ]
  
}
  

三、组件&工具安装前期准备工作
  由于要安装的组件大量引用了golang.org官方原生的一些代码(特别是tools/lint),因此引用代码不存在的话会导致第三方的源代码编译不通过,且大量报错
  
directory "D:\GoPath\src\golang.org\x\tools\go\buildutil" is not using a known version control system 等等...
  
golang.org官方源码列表 & 对应的github.com映射关系,可视情况安装:

github.com
golang.org
源码大小
是否必须
git@github.com:golang/lint.git
golang.org/x/lint
470kb
Y
git@github.com:golang/tools.git
golang.org/x/tools
21.4mb
Y
git@github.com:golang/sys.git
golang.org/x/sys
8.74mb
Y
git@github.com:golang/text.git
golang.org/x/text
46.9mb
-
git@github.com:golang/net.git
golang.org/x/net
12.6mb
-
git@github.com:golang/tour.git
golang.org/x/tour
12.6mb
-  Tips:先检查下 %GoPath%\src\golang.org\x 文件夹下的tools/lint等是否是从github获取的最新版本,若文件夹不存在自己创建
  
(注意一定要是git clone,而不是下载zip解压),正确如下图所示
  
DSC0002.png
  
DSC0003.png
  关于golang包管理机制,另一篇文章 window下golang包管理glide使用说明也是解决类似问题。go官方也许会在go2.0的版本解决

四、正式开始安装组件&工具
  官方文档说明 https://github.com/Microsoft/vscode-go/wiki/Go-tools-that-the-Go-extension-depends-on
  
vscode也可以通过ctrl+shift+p 运行命令一次性安装所有这些工具
  
DSC0004.png
  

Go: Install/Update Tools  

DSC0005.png

  
组件安装过程稍微有一点慢,耐心的等待...

安装的组件
默认安装状态
组件备注
github.com->golang.org
go get -u -v github.com/nsf/gocode
SUCCEEDED
自动补全
go get -u -v github.com/uudashr/gopkgs/cmd/gopkgs
SUCCEEDED
自动补全未导入的包
go get -u -v github.com/ramya-rao-a/go-outline
SUCCEEDED
当前文件中按符号搜索
https://github.com/golang/tools
go get -u -v github.com/acroca/go-symbols
SUCCEEDED
当前workspace中按符号搜索
go get -u -v golang.org/x/tools/cmd/guru
SUCCEEDED
查找所有引用组件
go get -u -v golang.org/x/tools/cmd/gorename
SUCCEEDED
重命名符号
go get -u -v github.com/fatih/gomodifytags
SUCCEEDED
修改结构上的标签
go get -u -v github.com/haya14busa/goplay/cmd/goplay
SUCCEEDED
for running current file in the Go playground
go get -u -v github.com/josharian/impl
SUCCEEDED
for generating stubs for interfaces
go get -u -v github.com/davidrjenni/reftools/cmd/fillstruct
SUCCEEDED
for filling a struct literal with default values
go get -u -v github.com/rogpeppe/godef
SUCCEEDED
转到定义2
go get -u -v golang.org/x/tools/cmd/godoc
SUCCEEDED
鼠标悬停显示文档注释2
go get -u -v sourcegraph.com/sqs/goreturns
SUCCEEDED
格式化代码2
go get -u -v github.com/golang/lint/golint
SUCCEEDED
for linting
https://github.com/golang/lint
go get -u -v github.com/cweill/gotests/...
SUCCEEDED
生成单元测试
go get -u -v github.com/derekparker/delve/cmd/dlv
SUCCEEDED
调试
go get -u -v github.com/zmb3/gogetdoc
转到定义2/鼠标悬停显示注释2
go get -u -v golang.org/x/tools/cmd/goimports
格式化代码2  经过步骤三的tools和lint的clone后安装正常都应该是SUCCEEDED,且不需要墙,如遇个别安装FAILED 再单独执行go get ...,看还缺少什么在http://github.com/golang 中找到相应的组件按同样的方法clone在golang.org/x文件夹下
  
TIPS:go版本和组件全部都重新安装一遍后也能解决vscode 运行go卡的问题,具体原因不详,建议go版本更新后最好都重新安装下组件。
  
之前一直嫌弃vscode运行go卡而用liteide。重新开始用vscode主要原因: 1、颜值高 2、vscode已成为了非常流行的IDE

五、 cannot find package错误
DSC0006.png

  
检查go环境变量配置,新安装的go1.10.2的版本默认会在当前用户新增一个GOPATH导致冲突无法编译,删除即可
  
DSC0007.png

六、 调试/生成


  • vscode打开main.go直接F5就可以运行&调试
  • 生成exe,vscode F5运行会在根路径下生成一个debug文件,把debug文件重命名加.exe后缀可以直接当应用程序运行  
    另一种方式cmd切换到项目文件夹下用

  

go build -o demo.exe main.go   

  意思是main.go生成名为demo.exe应用程序,go build生成的exe实际比debug要小



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-598804-1-1.html 上篇帖子: Golang channel 用法简介 下篇帖子: golang使用Nsq
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表