使用gofmt,您可以在打開的文件或整個Go項目中格式化Go原始碼.另外,您可以使用文件監視程序來觸發gofmt和goimport。File watcher是一個內置的GoLand工具,可讓您在更改或保存文件時自動運行命令行工具。GoLand自動保存您在文件中所做的更改。
格式化go文件, 轉到 Tools | Go Tools | Go fmt file.格式化go項目, 轉到 Tools | Go Tools | Go fmt project.在提交到git倉庫之前, 選中 Go fmt 選項框. 更多信息參考 👉Commit and push changes to Git repository.For more information about gofmt, see Command gofmt[1].
goimports使用goimports,您可以自動更新Go導入行(添加缺少的內容並刪除未引用的導入內容)。
如果你沒有goimports包,那麼你可以打開命令行終端使用該命令下載: go get golang.org/x/tools/cmd/goimports. 回車 ⏎.增加丟失的導入包語句,轉到 Tools | Go Tools 並點擊 Goimports file.goimports工具還以與相同的樣式設置代碼格式gofmt。有關更多信息goimports,請參見👉Command goimports。
go generate在go generate使用//go:generate指令來定義和調用的代碼生成。有關更多信息go generate,請參閱👉blog.golang.org上的生成代碼。
在go語言中編寫此連結,並點解該連結: //go:generate command arguments (例如: //go:generate stringer -type=Pill)點擊 Tools | Go Tools | Go generate file. 或者,點擊左側的綠色 Run 圖標 ( 選擇Go generate file .有關的更多信息go generate,請參見 👉Generate Go files by processing source和 Generating code[2]
go vet該go vet命令檢查Go原始碼並報告可疑結構。
使用 go vet找到可能出現的bug和一些可疑的結構體, 點擊 Tools | Go Tools | Go vet file. 你可在terminal窗口查看到代碼分析的結果
Example of go vet有關更多信息go vet,請參閱Command vet[3]。
go vet在命令行中也是比較常用的,下面了解一下go vet在終端命令行下如何使用, 可以使用該vet工具,對一個或者多個go文件進行語法檢查
go vet cmd/http_server/*.go
go vet cmd/http_server/main.go
附加tags我們還可以給vet 傳遞一些 tag 來指定檢測行為,默認是all,全部檢查,當傳入以下tag的時候all將被設置為false
使用方法
go vet -atomic=false test.go更多tag含義如下表,大家也可以去golang 官方去找 vet command的文檔,裡面更精確地描述。
tag描述-all進行全部檢查。如果有其他檢查標記被設置,則命令程序會將此值變為false。默認值為true。-asmdecl對彙編語言的源碼文件進行檢查。默認值為false。-assign檢查賦值語句。默認值為false。-atomic檢查代碼中對代碼包sync/atomic的使用是否正確。默認值為false。-composites是否使用複合結構檢查的白名單。僅供測試使用。默認值為true。-compositeWhiteList對彙編語言的源碼文件進行檢查。默認值為false。-assign檢查賦值語句。默認值為false。-methods檢查那些擁有標準命名的方法的籤名。默認值為false。-printf檢查代碼中對列印函數的使用是否正確。默認值為false。-printfuncs需要檢查的代碼中使用的列印函數的名稱的列表,多個函數名稱之間用英文半角逗號分隔。默認值為空字符串。-rangeloops檢查代碼中對在range語句塊中迭代賦值的變量的使用是否正確。默認值為false。-structtags檢查結構體類型的欄位的標籤的格式是否標準。默認值為false。-unreachable查找並報告不可到達的代碼。默認值為false。使用Jenkins Pipeline實現Golang項目的持續集成與部署(不一樣的實現方式)
參考資料[1]command gofmt: https://golang.org/cmd/gofmt
[2]Generating code: https://blog.golang.org/generate
[3]Command vet: https://golang.org/cmd/vet/