網頁

2021/8/18

Go golangci-lint gocritic rangeValCopy warning

執行golantci-lint時出現gocriticrangeValCopy警告如下。


main/main.go:123:2: rangeValCopy: each iteration copies 128 bytes (consider pointers or indexing) (gocritic)
    for _, d := range org.Departments {
    ^

意思是在loop org.Departments時,每一次loop會複製128bytes的Department元素導致效能不好,建議改用pointer或indexing的方式來loop。

下面是原本的寫法,每次loop都會從org.Departments copy元素內容到d

for _, d := range org.Departments {
    doSomething(d)
}

改用indexing,每次loop則是從org.Departments以index直接取得陣列元素。

for i := range org.Departments {
    doSomething(org.Departments[i])
}


沒有留言:

張貼留言