工欲善其事必先利其器。对于开发工程师同样如此,一个合适的开发工具能够有效提升我们的开发效率和定位问题的能力。

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。

  1. go mod tidy

  2. go build .

  3. Goland -> Preferences -> Go -> Go Modules -> Enable Go Modules integration -> 配置 goproxy

  4. 右键点击项目根目录->Mark Directory as -> Resource root

  5. 重启 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 这些实操技巧,你可能还不会!相关推荐

  1. 腾讯专家详解Angel平台实操技巧,助你比赛一马当先!

    ​ 腾讯广告算法大赛"视"界杯直播周于5月10日至5月12日火热进行中. 腾讯高级算法研究员芦清林.熊江丰为大家详细解读了2021腾讯广告算法大赛赛题,在直播现场为同学们答疑解惑. ...

  2. cadence修改板框倒角_Allegro实操技巧:如何对矩形板框进行倒角设置?

    原标题:Allegro实操技巧:如何对矩形板框进行倒角设置? 如何对Cadence Allegro矩形板框进行倒角设置?在PCB设计中,结构图可能没有提出要四周倒角,但是,通常PCB都要将边缘进行倒圆 ...

  3. kuka机器人焊接编程入门教程_套装 官方正版 KUKA工业机器人从入门到精通 共3册 库卡 基础入门与应用案例精析 编程高级教程 编程与实操技巧...

    <KUKA工业机器人基础入门与应用案例精析> 本书基于作者多年与KUKA机器人相关的从业经验来编写,全书共7章,主要围绕KUKA机器人的机械.电气.操作.配置软件.编程软件以及应用等方面展 ...

  4. 30个实操技巧--闲鱼无货源模式

    闲鱼是一个把家里的闲置物品放到平台上二手转卖,从而获得对应的资金的平台.但是有些人懒得去寄快递但又想赚到钱,这就出来了闲鱼无货源. 虽然闲鱼的门槛比较低,没有成本的投入,但是,也不是你想做就能做的.首 ...

  5. 库卡机器人编程权限_KUKA库卡机器人实操技巧:信息编程(中)-信息编程步骤(除对话信息)...

    Hi 大家好,你们的 小KU老师又来了,上堂课给大家介绍了KUKA库卡机器人控制柜KR C4 Smartpad 显示的图标所代表的信息类型!咦?我咋听到有些小伙伴说忘记讲课内容啦,别担心,可戳下方补课 ...

  6. 新手必看:Photoshopnbsp;165条实操技巧

    1.快速打开文件:双击Photoshop的背景空白处(默认为灰色显示区域)即可打开选择文件的浏览窗口. 2.随意更换画布颜色:选择油漆桶工具并按住Shift点击画布边缘,即可设置画布底色为当前选择的前 ...

  7. 如何百度SEO引流?百度SEO引流实操技巧

    众所周知,百度搜索进来的流量是很精准的,这对于做互联网运营的朋友都清楚这一点.其实排在百度首页的那么多网站,排名主要分2种,第一种,免费推广,第二种,付费推广.想要长远在百度上布局流量,我们必须考虑做 ...

  8. App换量攻略|实操技巧+换量神器,app换量推广

    作为一个有雄心壮志的App(刚起步的App),奔着2018年猛打市场,狠抓用户的目标,我们努力尝试着各个渠道的推广. 主流应用市场上架和推广 媒体付费推广 社群.kol推广 还有换量推广...等等 每 ...

  9. 小数向上_【实操技巧】社保计算方法:向上取整见分进角(上)

    我们不一样 上海的社保计算方法,采用的是"见分进角".在EXCEL表格里面,是找不到这个函数的,我们通常使用"向上取整":ROUNDUP函数,但两者相似却并不相 ...

最新文章

  1. 采购申请的处理流程 --- 责任链模式
  2. android 之 Activity管理与Intent的六大属性
  3. Android服务一 创建启动服务
  4. MOVSX和MOVZX
  5. python程序设计第一章答案_Python《学习手册:第一章-习题》
  6. 个人作业1——四则运算题目生成程序(基于java)
  7. 从无线安全到内网渗透
  8. 第四章 类中数据的共享和保护
  9. vector初始化与清空
  10. MySQL基础回顾(七):数据查询语言DQL---select查询语句总结(篇二)
  11. 使用 乐吾乐topology 遇到的问题解决方法汇总
  12. UE编辑器格式化java代码
  13. 合并算法详解原理和代码
  14. anaconda3如何卸载干净
  15. 游戏建模师真实状况,入行4K?网上吐槽的是真的吗?
  16. 2019 NeurIPS | Graph Transformer Networks
  17. C#_CRC-16/CCITT-FALSE计算加判断
  18. 20169220 网络攻防实践 第二周学习总结
  19. 楼宇能效控制器真的有用吗
  20. 蓝牙baseband概述

热门文章

  1. mysql 特殊字符支持_mysql 解决生僻字,特殊字符插入失败
  2. 基于 DataLakeAnalytics 做跨地域的数据分析 1
  3. RMAN删除归档日志不释放问题
  4. mysql5.7 solo web服务器
  5. jquery的$.each和$().each
  6. 关于TaskStatus状态WaitingForChildrenToComplete 的疑问
  7. SQL Server 2008 : 基于策略的管理(Policy-Based Management)
  8. CodeForces - 1430E String Reversal(线段树+模拟)
  9. HDU - 6598 Harmonious Army(最大流最小割)
  10. Gym - 101972H Beautiful Substrings(思维+模拟)