如何阻止GoLand自动删除未使用的导入?

nom*_*cto 4 go goland

我正在与Jetbrains GoLand合作,我想知道是否有可能以某种方式禁用自动删除未使用的导入.我之前搜索过Jetbrains论坛,并没有专门针对Goland的此类信息. 这张照片显示了问题.

son*_*207 13

如果禁用它不起作用,File | Settings | Go | Imports | Unchecked Optimized Imports On the fly您可以在“保存”操作菜单中禁用它

在此输入图像描述

优化在文件 | 中启用的导入 设置 | 工具| 保存操作 | 取消选中优化导入

参考:https://youtrack.jetbrains.com/issue/GO-6881/Goland-deletes-code-import-statements-are-deleted-automatically-before-I-even-get-an-opportunity-to-use-他们#focus=Comments-27-6124465.0-0


Jun*_*ang 11

另一个解决方案是将导入命名为“_”。例如:import _ "your/package"。这样做可以防止自动删除。

  • 这是唯一对我有用的解决方案,即使在禁用选项中的所有导入设置之后,只要我单击终端窗口输入“go get”,它仍然会删除导入 (4认同)

dls*_*per 8

使用此功能,以便您不会收到来自Go的未使用导入的编译错误.

虽然您可以通过"设置(首选项)|开始|导入|动态优化导入"来停用该功能,但我建议保留原样,而是让IDE为您管理导入.

例如,您可以在"main"函数内部开始键入"template.New",IDE将询问要导入哪个"模板"包,因为标准库"text/template"和"html/template"中有两个包.当只有一个包可用时,将自动导入.当您删除对"模板"包的最后一个引用时,IDE将自动删除导入,从而允许您运行代码而不会出现任何编译问题.

  • IDE 有时会出错。例如,如果我“导入“rsc.io/quote/v4””,然后在我的函数中使用“quote.Glass()”,则 GoLand 会删除导入。但如果我小心翼翼地不保存,然后右键单击 go.mod 并执行“GoModTidy”,那么它就可以正常工作。相比之下,VSCode 甚至可以完美地处理保存并且不会删除导入。 (3认同)
  • 我希望真正得到错误,而不是一些外部事物自动修改我的代码。我还喜欢手动格式化我更改过的文件或代码中的位置。世界是不完美的。我最近开始在一个遗留项目中使用 GoLand,默认情况下使用此选项只是让我们花费了几个小时来尝试弄清楚它。 (2认同)

s0x*_*asd 5

GoLand 的 2021.2 版本及更高版本 ( GO-11362 )中的行为略有变化。

以前的行为(2021.1.3 及更低版本):

在此输入图像描述

当前版本(2021.2 及更高版本):

在此输入图像描述

因此,它略有更新,没有理由禁用动态优化导入,但正如 dlsniper 所说,您可以开始输入代码并稍后导入包。这是一个有点方便的方法。

  • 所以似乎他们将所有内容恢复为“(2021.1.3 及更低)”...我有“GoLand 2022.2.4” (2认同)