三、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...