如何利用Go提供的一些工具和參數,幫助寫出更好的代碼?
一. golint 檢查代碼規范 例如 golint player.go 或 golint game/
golint <directory|files>
golint 會檢測的方面:
- 變量名規范
- 變量的聲明,像var str string = "test",會有警告,應該var str = "test"
- 大小寫問題,大寫導出包的要有注釋
- x += 1 應該 x++
ps:連 a+=1 都要改為a++,a+=2反而沒問題,有點接受不了!!!
二. go vet 檢查代碼存在的隱患 例如 go tool vet . 或 go tool vet game/
go tool vet <directory|files>
錯誤示例: https://studygolang.com/articles/9619
三. --race 檢查是否有race condition(並發競爭) 例如:go run --race trace.go 或 go build --race trace.go
golang在1.1之后引入了競爭檢測的概念。我們可以使用go run -race 或者 go build -race 來進行競爭檢測。
golang語言內部大概的實現就是同時開啟多個goroutine執行同一個命令,並且紀錄每個變量的狀態。
但是這個參數會引發CPU和內存的使用增加,很耗性能,所以基本是在測試環境使用,不是在正式環境開啟。
最后補一下編碼規范,可以在goland編輯器使用插件go fmt,統一規范項目組的代碼編寫:
ok,that's all, thanks!