Golang 是在编程风格和代码组织等一些决定上是出了名的固执己见。尽管 Golang 提供了一个不错的 lint 工具,但是却没有提供任何对此工具的配置机制。Golang 的哲学便是要么按它的方式使用它,要么别用。

作为一个从 Java 世界过来开始接触 Go 语言的人,了解到 Go 使用驼峰式命名是很适应很高兴的。但是当了解到一些通用的缩写语需要全部大写时,却还是有些不太习惯,例如使用 userID 而非 userId

你可能觉得这只是强迫症的矫情并不是什么大问题?好吧,举几个例子,假设你想在你的代码里起这些名字:makeHttpUrlConnection, getHttpApiUrl and isHttpsApiHost. 使用 go lint 之后这些命名会被建议为:makeHTTPURLConnection, getHTTPAPIURL and isHTTPSAPIHost. 是不是可读性大打折扣?

想配置一下 go lint 让它不提醒这些?对不起,go lint 不支持自定义配置。这些 lint 的字典表是写死在代码里的:https://github.com/golang/lint/blob/master/lint.go#L742 . 显然 Go 官方 team 根本不认为这是个问题,见 github issue 上的讨论:

.golintrc for enabling and disabling rules