有没有办法标记编译器忽略未使用的导入?

时间:2015-08-03 16:26:05

标签: go compiler-errors

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

即使不可能,这种选择的利弊是什么?

1 个答案:

答案 0 :(得分:10)

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

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源文件时,该程序可以轻松连接到大多数编辑器以自动运行。