Goland 自动格式化

问题描述

是否可以调整 Goland 自动格式化、添加删除导入的方式?它不断删除我的程序需要运行的导入,因此我需要在每次推送后手动重新添加它,这让我发疯。

另外,是否可以将 Goland 设置为在保存时自动格式化(如 go fmt)?

解决方法

是否可以调整 Goland 自动格式化、添加和删除导入的方式?

我怀疑 this (Git | Commit -> Settings -> Optimize Imports ) 是您正在寻找的选项(请注意,参考页面上还有很多其他相关设置)。

请注意,未使用的导入会导致编译错误(例如 imported and not used: "net/http"),因此您可能需要在签入代码之前解决此问题。

另外,是否可以将 Goland 设置为在保存时自动格式化(如 go fmt)?

您可以在保存时运行 go fmt,但有许多因素需要考虑,this blog post 中涵盖了这些因素(主要考虑因素是 GoLand 有自己的格式化程序)。总之,当前状态(来自链接)是:

目前,GoLand 提供三种与“go fmt”交互的方式:专用操作、提交前工具和文件观察器。

在工具下 | Go Tools 菜单,可以找到两个与代码格式化相关的动作:Go Fmt File 和 Go Fmt Project。每个都有一个分配给它的快捷方式:分别为 Alt + Shift + Control + F(在 macOS 上为 Alt + Shift + Cmd + F)和 Alt + Shift + Control + P(Alt + Shift + Cmd + P)。这些操作的唯一目的是运行“go fmt”,为其提供文件路径或项目目录路径,并且它们仅在您手动调用它们时起作用。

有几个钩子可以在提交之前运行。它们可以通过设置(macOS 上的首选项)进行配置 |版本控制 |提交 |在提交之前。在那里你可以找到默认启用的 Go fmt。

第三种方式是配置文件观察器。在设置(首选项)下,您可以找到工具 |文件观察者。使用预定义的“go fmt”模板可以轻松添加新的观察者。每当更改 Go 文件时,都会在其上执行命令。在这种情况下,关键词是“无论何时”,因为用户无法完全控制文件被修改的确切时刻。我将在下一节中更详细地描述这个问题。