Goland 这些实操技巧,你可能还不会!
Posted qcrao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Goland 这些实操技巧,你可能还不会!相关的知识,希望对你有一定的参考价值。
工欲善其事必先利其器。对于开发工程师同样如此,一个合适的开发工具能够有效提升我们的开发效率和定位问题的能力。
Golang IDE 被 Gopher 接受的其实不太多,Goland 和 VSCode 应该是占比重最大的。vim-go 真心就不推荐了,入门曲线太过陡峭,太过华而不实(vim 党不要喷我),我们就写程序而已,何苦为难自己呢。
我日常开发中,Goland,Vscode 一般会配合使用。对于 VsCode 来说,我唯一觉得不方便的是 VSCode 的 Debug 功能,配置起来麻烦,而且总有种很卡的感觉。
本篇文章我会介绍一点 Goland 开发中比较常见的一些技巧,帮助你快速入门 Goland。
Goland Debug 调试
这里首先吐槽下 delve,对于用惯 gdb 的人来说,delve 简直弱爆了。
举个例子,gdb 有个非常强大的 x[1] 功能,能够去观察变量内存分布情况。delve 在 1.7.0 版本才提供这个功能,简单试用了一下,没有达到想象中的效果,不过也是可以使用的。这里就不在详细介绍,有兴趣的可以 delve help x 去查看。
更多时候我喜欢使用 goland 调试代码,基本满足日常的开发需求。这里分享几种进入 debug 模式的方式。
对于后端开发来说,一个趁手的接口调试工具是不可缺少的。在介绍如何 debug 接口之前,先推荐几款比较不错的接口调试工具。
REST Postman[2]
GRPC Bloomrpc[3]
GraphQL Insomnia[4]
主要步骤:
打断点
点击 debug 按钮启动程序
Postman 调用接口
单步调试
有些情况下,我们封装完底层基础函数后,接口调用该函数一直报错。如果从外面一层一层的 debug 进来,会特别麻烦,使用单测函数作为 debug 的入口也是特别方便的事情。
设置参数
一般情况下,不管我们使用 Goland 启动程序还是 Debug,都会遇到让输入参数的情况的。这个是个蛮重要的功能,但是很多同学不会设置。
主要步骤:
点击右上角:Edit Configuration ...
在弹出的框里选择正确的 Working Directory
在 Program arguments 里填写对应的参数即可
go 工具链引入
使用 Vscode 的同学会注意到,当我们打开 Go 源码文件时,会提示我们安装一套完整的工具链,在这一点上 Vscode 比 Goland 优秀太多了。Goland 不但没有一键导入的功能,而且每个工程都需要引入一遍,着实太坑。
Goland 可以引入 gofmt, goimport,当然还可以自定义其他相关的工具。不过根据我的使用来看,开着 gofmt 就可以了。
推荐一些好用的插件
ideaVim
Material Theme UI
Monokai Pro theme
Goland 莫名其妙的 Index 失效
Goland 在使用的过程中,可能会遇到莫名其妙的 Index 失效的情况。你可以通过下面的步骤来重新生成 Index。
go mod tidy
go build .
Goland -> Preferences -> Go -> Go Modules -> Enable Go Modules integration -> 配置 goproxy
右键点击项目根目录->Mark Directory as -> Resource root
重启 Goland
如果上面这些步骤执行完毕后,你的程序能够正常构建,但是 Goland 仍然提示 "Unresolved reference ", 那么恭喜你中奖了。
Goland 有很低概率会遇到 Index 完全失效,而且无法恢复,目测这是 Goland 的 Bug,遇到的概率不太高。
解决方案:
其实没有啥解决方案。我通常会这么做:彻底删除 Goland,再重新安装。
本篇文章中关于 Goland 的使用技巧,你是否感兴趣呢?欢迎留言评论,如果反响不错我会继续发出后续篇章(包括vscode)。
[1] x: https://visualgdb.com/gdbreference/commands/x
[2]Postman: https://www.postman.com/
[3]Bloomrpc: https://github.com/uw-labs/bloomrpc
[4]Insomnia: https://support.insomnia.rest/
以上是关于Goland 这些实操技巧,你可能还不会!的主要内容,如果未能解决你的问题,请参考以下文章