2 回答

TA貢獻1853條經驗 獲得超18個贊
在 Go 中,最少的檢查可能是 Go 工具go fmt
、、、go vet
和golint
。
這是一個最小的、可重現的示例(請參閱如何創建一個最小的、可重現的示例),它表明您的hamming.go
程序通過了所有當前檢查。
$ go version
go version devel +075c20cea8 Thu Dec 26 13:53:31 2019 +0000 linux/amd64
$ go fmt hamming.go
$ go vet hamming.go
$ go get -u golang.org/x/lint/golint
go: downloading golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f
go: found golang.org/x/lint/golint in golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f
go: downloading golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f
go: golang.org/x/tools upgrade => v0.0.0-20191226230302-065ed046f11a
go: downloading golang.org/x/tools v0.0.0-20191226230302-065ed046f11a
$ golint hamming.go
$ cat hamming.go
// Package hamming is Exercism.io exercise
package hamming
import "errors"
// Distance — Calculating Hamming Distance for two DNA strands
func Distance(a, b string) (int, error) {
if len(a) != len(b) {
return 0, errors.New("Strands should be equal size")
}
if len(a) == 0 || len(b) == 0 {
return 0, nil
}
var hd int = 0
for i := 0; i < len(a); i++ {
if a[i] != b[i] {
hd++
}
}
return hd, nil
}
$
評論:我的導師發送了他的 linter 執行,并且有一些消息,例如
$ golint hamming.go hamming.go:17:15:
should drop = 0 from declaration of var hd; it is the zero value
– 銹跡斑斑
您的導師正在使用舊版本的golint. 對于當前版本,它們應該運行
go get -u golang.org/x/lint/golint
您的導師是否解釋了 的有限目的golint?例如,“Golint 并不完美,同時存在誤報和誤報。不要將其輸出視為黃金標準?!?/p>
目的
Golint 與 gofmt 不同。Gofmt 重新格式化 Go 源代碼,而 golint 打印出樣式錯誤。
Golint 與 govet 不同。Govet 關注正確性,而 golint 關注編碼風格。Golint 在 Google 中使用,它尋求與開源 Go 項目的公認風格相匹配。
golint 提出的建議正是:建議。Golint 并不完美,同時存在誤報和誤報。不要將其輸出視為黃金標準。我們不會添加編譯指示或其他旋鈕來抑制特定警告,因此不要期望或要求代碼完全“無 lint”。簡而言之,這個工具不是而且永遠不會足夠值得信賴,以至于它的建議可以自動執行,例如作為構建過程的一部分。Golint 為 Effective Go 和 CodeReviewComments wiki 頁面中列出的許多機械檢查項目提供建議。
這是我的解決方案嘗試:
package hamming
import "errors"
// Distance returns the Hamming distance for two DNA strings of equal length.
// DNA strings are constructed from the alphabet {A, C, G, T}.
func Distance(a, b string) (int, error) {
if len(a) != len(b) {
return 0, errors.New("strings should be of equal length")
}
d := 0
for i := 0; i < len(a); i++ {
if a[i] != b[i] {
d++
}
}
return d, nil
}

TA貢獻1833條經驗 獲得超4個贊
您應該定義置信水平(min_confidence參數)。
例如:golint -min_confidence 0 your_file_to_test
查看 golint 用法:
golint -h
Usage of golint:
golint [flags] # runs on package in current directory
golint [flags] [packages]
golint [flags] [directories] # where a '/...' suffix includes all sub-directories
golint [flags] [files] # all must belong to a single package
Flags:
-min_confidence float
minimum confidence of a problem to print it (default 0.8)
-set_exit_status
set exit status to 1 if any issues are found
- 2 回答
- 0 關注
- 236 瀏覽
添加回答
舉報