gofmt, golint, gopls, govet 的区别

发布时间: 2022-06-10 16:00:58 作者: 大象笔记

ALEInfo 显示,目前用 NeoVim 打开 go 代码文件时,默认启用了 4 个 linter:

Enabled Linters: ['gofmt', 'golint', 'gopls', 'govet']

其引起的不便是,同一行代码错误,可能会显示两条错误信息。例如,

composite literal uses unkeyed fields

这一个问题,显示了两行提示:一个 warning,一个 error。推测是启用了两个 go lint 语法检测。

禁用之前,需要先了解各个工具的功能,及区别。

go vet

vet 兽医的意思。。。大概是治疗 go 吉祥物这个大老鼠的吧。。。

go vet starts where the compiler ends by identifying subtle issues in your code. It’s good at catching things where your code is technically valid but probably not working as intended.

例如:

gofmt

没啥好说的,go 内置的代码格式化工具。例如自动处理代码缩进,换行等。方便团队统一代码风格。

golint

用于统一 go 代码规范,规范:

https://golang.org/doc/effective_go.html

https://github.com/golang/go/wiki/CodeReviewComments

例如:

gopls

gopls, 读作 go please 。。。是官方提供的 language server。

我是一名山东烟台的开发者,联系作者