几天前,我启动了一个新的go项目,并使用golangci-lint使代码风格良好。我发现gochecknoinits是golangci-lint的短毛绒之一,它告诉我不要使用init。
我认为,为方便起见,我可以将简单的初始代码放在init中。如果没有init,则必须在使用该程序包之前编写一个Init函数并找到要调用它的地方。这可以被忘记或可以多次执行。
那么,在go中使用init真的不好吗?
abc := []byte{'a', 'c', 'b'}
sort.Slice(abc[1:], func(i, j int) bool {
return abc[i] < abc[j]
})
fmt.Println(string(abc)) //print acb
Run Code Online (Sandbox Code Playgroud)
上面的代码没有abc正确排序。为什么?