【问题标题】:Is there a way to flag compiler to ignore unused imports? [duplicate]有没有办法标记编译器忽略未使用的导入? [复制]
【发布时间】:2015-08-04 14:03:10
【问题描述】:

如果编译器可以识别出未使用导入,那么是否可以将其设置为在没有该导入的情况下继续编译?

即使不可能,这种选择的优缺点是什么?

【问题讨论】:

  • 否,但有一些第三方选项。这个很受我认识的很多人的欢迎(我个人不喜欢这些工具)packagecontrol.io/packages/GoImports - 不过只适用于 Sublime3。
  • 我删除了您对副本的修改。您的建议很好,可能会发布到 meta.stackoverflow.com,但与发布的问题没有直接关系。

标签: go compiler-errors


【解决方案1】:

没有。有关推理,请参阅以下常见问题解答:

FAQ: Can I stop these complaints about my unused variable/import?

未使用的变量的存在可能表明存在错误,而未使用的导入只会减慢编译速度,随着时间的推移,随着程序积累代码和程序员,这种影响会变得很重要。由于这些原因,Go 拒绝使用未使用的变量或导入来编译程序,以短期的便利性换取长期的构建速度和程序的清晰度。

不过,在开发代码时,通常会临时创建这些情况,并且在程序编译之前必须将它们编辑出来可能会很烦人。

有些人要求提供编译器选项来关闭这些检查或至少将它们减少为警告。但是,没有添加这样的选项,因为编译器选项不应该影响语言的语义,而且 Go 编译器不报告警告,只报告阻止编译的错误。

没有警告有两个原因。首先,如果值得抱怨,那就值得在代码中修复。 (如果它不值得修复,那就不值得一提。)其次,让编译器生成警告鼓励实现警告可能使编译嘈杂的弱案例,掩盖应该修复的真正错误。

不过,解决这种情况很容易。使用空白标识符让未使用的东西在开发过程中保持不变。

你可以做的是在暂时想要排除某些东西时使用空白标识符,例如

import (
    "fmt"
    _ "time"  // This will make the compiler stop complaining
)

如今,大多数 Go 程序员都使用 goimports 工具,它会自动重写 Go 源文件以具有正确的导入,从而在实践中消除未使用的导入问题。这个程序很容易连接到大多数编辑器,以便在编写 Go 源文件时自动运行。

【讨论】:

  • 我开始理解为什么这种语言被描述为“固执己见”。到目前为止,我并不介意。
  • 真的,需要创建一个单独的工具goimports 来解决这个问题吗?此外,_ "time" 实际上与// "time" 相同,并且无论哪种方式都很烦人。我确实喜欢他们在 Golang 上做出的大多数决定,但这个很臭。
  • 此外,如果这是一个如此令人担忧的问题,他们仍然应该在测试期间将其作为警告,并且在生产编译期间仅作为错误。
  • +1 回答,但如果我可以的话,我会 -1 引用的理由,因为它愚蠢地省略了几个实际相关的考虑因素。例如,无法忽略未使用的导入使得迭代开发方式比它需要的更痛苦 - 例如,我通常在启动新文件时将我打算使用的所有内容都包含在 import 块中,但随后想要迭代地编译和测试我在文件中实现的每一项功能 - Go 迫使我继续手动添加/删除 _// 到导入,或者保留并运行一个工具来完成它。跨度>
  • 我的意思是我明白了——如果你仅仅因为它在开发中有用就给人们一些东西,那么不可避免地会有人在生产中依赖它。但还是。确实增加了明显不必要的繁琐开销,而这些开销在我和我想要完成的事情之间并不一定存在。
猜你喜欢
  • 2019-11-20
  • 1970-01-01
  • 1970-01-01
  • 2020-05-03
  • 2010-09-09
  • 1970-01-01
  • 1970-01-01
  • 2020-07-02
  • 2014-08-01
相关资源
最近更新 更多