golang 一些常用的靜態檢查工具

2021-10-10 17:54:51 字數 1816 閱讀 1751

三、goimports(比gofmt 更常用)

四、go vet (靜態**檢查)

五、go module

俗話說,工欲善其事,必先利其器。go 作為乙個對基礎功能封裝非常好的語言,對編碼體驗,如何更高效地寫出高效能**,都是考慮非常好的。因此,如何能夠寫出更美觀、更安全的golang**,也是我們需要關注的目標。go 本身也提供了非常多的工具供我們使用。

這裡先將所有常用的指令放到這個**中:

主要修復**格式,比如**塊的tab。

-l: 僅列印需要替換的檔案名字,不替換檔案內容

如下:

-r: 指定替換規則,格式:-s 「pattern -> replacement」

-s:顯式指定需要替換的檔案

-w:直接修改目標檔案,且命令列不列印任何資料

idea 自帶,也可以使用下面的語句強行執行

一般是對工程中變數名字的對齊,比如行開頭統一使用tab

注意:gofmt ≠ **規範,比如它不會管單行是否超過了120個字元

go fmt 是對 gofmt 的簡單封裝,比如一些通用的**規範規則,我們直接使用go fmt 就可以直接覆蓋了。效果如下:

當然,和 gofmt 一樣,go fmt 也不能解決**本身的邏輯問題。

goimports 是gofmt 的公升級版,相對gofmt,它不僅可以修復**格式,還可以規範import 的格式。

比較規範的import 格式:

import(

// 標準包

"log"

"json"

...// 內部包

"mygoproject/model/..."

...// 第三方包

修改某個檔案:

goimports -w filename

修改整個目錄下的所有**:

goimports -w 目錄名

前面看到的 gofmt 和 goimports 都不涉及到**邏輯的檢查。那麼接下來就是 go vet 大展手腳的地方了

掃瞄單個檔案:

go vet filename.go

掃瞄整個專案:

還是前面的示例,把括號補充之後,依然會報錯:

loop variable currentfloat captured by func literal

這就是在迴圈中使用協程帶來的問題了。具體原因可以參考這個問答說明。

迴圈中使用 go routine 一定要注意引數的傳遞方式。正確的使用方式:

比如永遠是true/false的表示式,或者是不可到達的**等。

管理專案依賴

專題介紹

1、goland 自帶的go 工具

golang一些常用的靜態檢查工具詳解

俗話說,工欲善其事,必先利其器。go 作為乙個對基礎功能封裝非常好的語言,對編碼體驗,如何更高效地寫出高效能 都是考慮非常好的。因此,如何能夠寫出更美觀 更安全的golang 也是我們需要關注的目標。go 本身也提供了非常多的工具供我們使用。這裡先將所有常用的指令放到這個 中 主要修復 格式,比如 ...

記錄一些常用golang包的用法

定義flag有兩種方式 flag.int flagname 1000,help message for flagname 返回的是對應型別的指標 第乙個引數 設定flag的名稱 第二個引數 設定flag的預設值 第三個引數 設定flag的提示資訊 flag.intvar var,flagname 1...

golang的一些使用技巧

1.列舉的實現 const freetime 5 bettime 9 opentime 7 比如 定義位元組大小的列舉 const b 1 10 iota 1 kb 1024 mb 1024 1024 gb 1024 1024 1024 2.繼承 type father struct var son...