Goland 這些實操技巧,你可能還不會!
工欲善其事必先利其器。對于開發(fā)工程師同樣如此,一個合適的開發(fā)工具能夠有效提升我們的開發(fā)效率和定位問題的能力。
Golang IDE 被 Gopher 接受的其實不太多,Goland 和 VSCode 應(yīng)該是占比重最大的。vim-go 真心就不推薦了,入門曲線太過陡峭,太過華而不實(vim 黨不要噴我),我們就寫程序而已,何苦為難自己呢。
我日常開發(fā)中,Goland,Vscode 一般會配合使用。對于 VsCode 來說,我唯一覺得不方便的是 VSCode 的 Debug 功能,配置起來麻煩,而且總有種很卡的感覺。
本篇文章我會介紹一點 Goland 開發(fā)中比較常見的一些技巧,幫助你快速入門 Goland。
Goland Debug 調(diào)試
這里首先吐槽下 delve,對于用慣 gdb 的人來說,delve 簡直弱爆了。
舉個例子,gdb 有個非常強大的 x[1] 功能,能夠去觀察變量內(nèi)存分布情況。delve 在 1.7.0 版本才提供這個功能,簡單試用了一下,沒有達到想象中的效果,不過也是可以使用的。這里就不在詳細介紹,有興趣的可以 delve help x 去查看。
更多時候我喜歡使用 goland 調(diào)試代碼,基本滿足日常的開發(fā)需求。這里分享幾種進入 debug 模式的方式。
對于后端開發(fā)來說,一個趁手的接口調(diào)試工具是不可缺少的。在介紹如何 debug 接口之前,先推薦幾款比較不錯的接口調(diào)試工具。
REST Postman[2] GRPC Bloomrpc[3] GraphQL Insomnia[4]

主要步驟:
打斷點 點擊 debug 按鈕啟動程序 Postman 調(diào)用接口 單步調(diào)試
有些情況下,我們封裝完底層基礎(chǔ)函數(shù)后,接口調(diào)用該函數(shù)一直報錯。如果從外面一層一層的 debug 進來,會特別麻煩,使用單測函數(shù)作為 debug 的入口也是特別方便的事情。

設(shè)置參數(shù)
一般情況下,不管我們使用 Goland 啟動程序還是 Debug,都會遇到讓輸入?yún)?shù)的情況的。這個是個蠻重要的功能,但是很多同學(xué)不會設(shè)置。

主要步驟:
點擊右上角:Edit Configuration ... 在彈出的框里選擇正確的 Working Directory 在 Program arguments 里填寫對應(yīng)的參數(shù)即可
go 工具鏈引入
使用 Vscode 的同學(xué)會注意到,當我們打開 Go 源碼文件時,會提示我們安裝一套完整的工具鏈,在這一點上 Vscode 比 Goland 優(yōu)秀太多了。Goland 不但沒有一鍵導(dǎo)入的功能,而且每個工程都需要引入一遍,著實太坑。
Goland 可以引入 gofmt, goimport,當然還可以自定義其他相關(guān)的工具。不過根據(jù)我的使用來看,開著 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
如果上面這些步驟執(zhí)行完畢后,你的程序能夠正常構(gòu)建,但是 Goland 仍然提示 "Unresolved reference ", 那么恭喜你中獎了。
Goland 有很低概率會遇到 Index 完全失效,而且無法恢復(fù),目測這是 Goland 的 Bug,遇到的概率不太高。
解決方案:
其實沒有啥解決方案。我通常會這么做:徹底刪除 Goland,再重新安裝。
本篇文章中關(guān)于 Goland 的使用技巧,你是否感興趣呢?歡迎留言評論,如果反響不錯我會繼續(xù)發(fā)出后續(xù)篇章(包括vscode)。
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/
