不喜欢广告? 无广告 今天

Go 代码格式化工具 (gofmt 风格)

开发人员
广告 · 消除?

或者
广告 · 消除?

指导

Go 代码格式化程序 (gofmt 风格)

Go 代码格式化工具 (gofmt 风格)

Go 的理念很明确:代码有一种正确的格式化方式,那就是 gofmt。每个 Go 项目都使用相同的格式 — 制表符进行缩进,花括号放在同一行,导入按排序 — 这种一致性是该语言最大的优点之一。但是,当你在 IDE 之外编辑 Go 代码、在浏览器中查看代码片段或整理文档中的代码时,并不总是能方便地使用 gofmt。

此工具完全在客户端应用 gofmt 风格的格式化到你的 Go 代码。粘贴你的代码,即可获得格式化后的代码。无需安装,无需服务器处理,无需数据离开你的浏览器。

如何使用

将你的 Go 源代码粘贴到输入区域,或尝试内置示例。格式化器会自动应用 gofmt 约定:制表符缩进,正确的花括号放置,导入排序和一致的间距。复制结果或将其下载为 .go 文件。

广告 · 消除?

特征

  • gofmt 风格的格式化 – 应用 Go 的标准格式规则:制表符缩进,同一行花括号,一致的间距
  • 导入排序 – 自动对导入进行分组和按字母排序,将标准库与第三方软件包分开
  • 分号移除 – 去除 Go 的词法分析器会自动插入的不必要的分号
  • 空行规范化 – 删除冗余的连续空行,以获得更整洁的输出
  • 语法验证 – 检测常见的错误,如不匹配的花括号,并报告行号
  • 客户端处理 – 你的代码保留在你的浏览器中 — 没有任何内容被上传或存储
  • 下载输出 – 一键将格式化后的代码导出为 .go 文件

何时使用此工具

在 IDE 之外查看 Go 代码片段、整理博客文章或文档中的代码、格式化嵌入在 markdown 或配置文件中的 Go 代码,或者当你想要快速格式化而无需设置本地 Go 工具链时,请使用它。它处理了绝大多数实际 Go 代码中最常见的格式化规则。

常问问题

  1. 为什么 Go 要强制采用单一的格式化风格?

    Go 的创建者认为格式化方面的争论会浪费开发者的时间。通过强制 gofmt 作为标准格式化器,Go 完全消除了风格上的争论 — 没有 Prettier 与 ESLint 的争论,没有制表符与空格的战争。每个项目中的每个 Go 文件看起来都一样,这减少了阅读不熟悉代码时的认知负担,并简化了自动化工具。Go 的谚语恰当地概括了这一点:gofmt 的风格不是任何人的最爱,但 gofmt 是所有人的最爱。

  2. 为什么 Go 使用制表符而不是空格进行缩进?

    Go 使用制表符是因为它们将缩进语义与表示分离开来。一个制表符表示一个缩进级别,每个开发者的编辑器都可以根据自己喜欢的方式显示它 — 2 个空格、4 个空格、8 个空格。这完全避免了关于空格的争论,因为源文件对每个人来说都是相同的,而视觉表示则适应每个开发者的偏好。这是对一个众所周知有争议的问题的务实解决方案。

  3. gofmt 和 goimports 有什么区别?

    gofmt 只处理代码格式化 — 缩进、间距、花括号放置。goimports 执行 gofmt 的所有功能,此外,它通过分析你的代码引用的包来自动添加缺失的导入语句并删除未使用的导入语句。大多数 Go 开发者使用 goimports 作为 gofmt 的即插即用替代品,因为它严格来说是一个超集。两者都产生相同的格式;goimports 只是在顶部添加了导入管理。

  4. Go 如何处理导入分组约定?

    Go 的导入约定使用空行在导入之间进行分隔。标准分组是:标准库包在前,第三方包在后。一些项目会为内部包添加第三组。在每个组内,导入会按字母顺序排序。goimports 会自动强制执行此操作。这种约定可以轻松一目了然地看到一个文件有哪些外部依赖项与它使用的标准库中的内容。

  5. gofmt 格式化是否可以自定义或覆盖?

    不可以,这是设计使然。gofmt 没有配置选项,没有改变风格的标志,也没有办法覆盖其决定。这是故意的 — 如果格式化是可自定义的,每个项目都会以不同的方式自定义它,从而违背了其目的。留给开发者的唯一格式化选择是为逻辑分组放置空行。其他所有内容都由 gofmt 决定。这种零配置方法是 Go 最受赞誉的设计决策之一。

想要享受无广告的体验吗? 立即无广告

安装我们的扩展

将 IO 工具添加到您最喜欢的浏览器,以便即时访问和更快地搜索

添加 Chrome 扩展程序 添加 边缘延伸 添加 Firefox 扩展 添加 Opera 扩展

记分板已到达!

记分板 是一种有趣的跟踪您游戏的方式,所有数据都存储在您的浏览器中。更多功能即将推出!

广告 · 消除?
广告 · 消除?
广告 · 消除?

新闻角 包含技术亮点

参与其中

帮助我们继续提供有价值的免费工具

给我买杯咖啡
广告 · 消除?