Go代码格式化工具的使用

严格程度从低到高分别是 gofmt goimports gofumpt

goimports

goimports -l -w .




gofumpt

好问题,这个命令是 Go 语言相关的代码格式化工具命令
我们来一点点解析 👇


🧩 命令拆解

1
gofumpt -d codec/types/any_test.go
  • gofumpt
    是 Go 官方 gofmt 的一个更严格、更一致的变体。
    👉 简单说,它自动格式化 Go 源码,让代码风格更统一、更干净。
    (名字来自 “go fmt” + “ump” = ultimate fmt 的意思)

  • -d
    表示 “显示差异(diff)”,而不直接修改文件。
    类似于 git diff,它只显示“当前文件”和“格式化后的文件”有什么不同。

  • codec/types/any_test.go
    是你要检查或格式化的目标 Go 源文件路径。


📘 实际效果

执行这个命令时,它会:

  1. 读入 codec/types/any_test.go
  2. 根据 gofumpt 的规则重新格式化那份代码
  3. 不修改文件内容,只在终端输出两者的差异(如果有)

输出示例如下(举个例子):

1
2
3
4
5
6
7
8
9
--- /path/to/codec/types/any_test.go
+++ gofumpt
@@ -10,7 +10,7 @@
func TestSomething(t *testing.T) {
- if x==y{
+ if x == y {
t.Log("Equal")
}
}

意思是:gofumpt 建议在 == 两侧加空格。


✅ 常见用途

  • 检查代码格式是否符合规范 (比如在 CI/CD 中)。
  • 在提交之前预览差异,决定是否执行 gofumpt -w 来实际修改文件。

⚙️ 补充

  • 如果你要让它直接修改文件,可以用:

    1
    gofumpt -w codec/types/any_test.go

    -w = write back changes)

  • 一般大家会在项目根目录运行:

    1
    gofumpt -l -w .

    这样它会遍历项目,统一格式化。


要不要我帮你列一个在项目里使用 gofumpt + golangci-lint 做自动格式检查的工作流模板(比如 GitHub Actions 版本)?这样可以自动在提交时帮你验证风格一致性。

即 常用命令:

只查看而不改:

gofumpt -d 某个文件 (-d是diff)

修改

gofumpt -w codec/types/any_test.go

修改全部

gofumpt -l -w .