Golang 程式設計規範
[TOC]
介紹
golang 本身提供很多程式碼規範的工具,不用額外製定規範,畢竟文件不如工具掃描有時效性
go vet
go vet
是一個用於檢查Go語言原始碼中靜態錯誤的簡單工具
go vet命令可以接受-n
標記和-x
標記
go tool vet
go tool vet 命令的作用是檢查Go語言原始碼並且報告可疑的程式碼編寫問題
比如,在呼叫Printf函式時沒有傳入格式化字串,以及某些不標準的方法簽名,等等
該命令使用試探性的手法檢查錯誤,因此並不能保證報告的問題確實需要解決。它確實能夠找到一些編譯器沒有捕捉到的錯誤。
go tool vet命令的標記
-all進行全部檢查。如果有其他檢查標記被設定,則命令程式會將此值變為false。預設值為true。 -asmdecl對組合語言的原始碼檔案進行檢查。預設值為false。 -assign檢查賦值語句。預設值為false。 -atomic檢查程式碼中對程式碼包sync/atomic的使用是否正確。預設值為false。 -buildtags檢查編譯標籤的有效性。預設值為false。 -composites檢查複合結構例項的初始化程式碼。預設值為false。 -compositeWhiteList是否使用複合結構檢查的白名單。僅供測試使用。預設值為true。 -methods檢查那些擁有標準命名的方法的簽名。預設值為false。 -printf檢查程式碼中對列印函式的使用是否正確。預設值為false。 -printfuncs需要檢查的程式碼中使用的列印函式的名稱的列表,多個函式名稱之間用英文半形逗號分隔。預設值為空字串。 -rangeloops檢查程式碼中對在```range```語句塊中迭代賦值的變數的使用是否正確。預設值為false。 -structtags檢查結構體型別的欄位的標籤的格式是否標準。預設值為false。 -unreachable查詢並報告不可到達的程式碼。預設值為false。
more info seeofollow,noindex">go 命令教程
race condition 檢查
資源競爭檢查,併發時遇到的問題,會導致併發能力下降, 長時間執行一般會出現這個錯誤
panic: runtime error: invalid memory address or nil pointer dereference
- 檢查方法
go build -race
文件見http://blog.golang.org/race-detector
golint
安裝方法
go get -v github.com/golang/lint go install github.com/golang/lint
使用
golint [dir or file]
風格檢查樣例https://github.com/golang/lint/tree/master/testdata
golint 檢查範圍就非常廣了,也很嚴格,可以配合 vscode 的go 外掛,或者 goland 來檢查程式碼風格