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

Sri*_*har 4 compiler-errors go

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

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

icz*_*cza 11

不可以.有关推理,请参阅以下常见问题

常见问题:我可以停止关于未使用的变量/导入的这些投诉吗?

存在未使用的变量可能表示存在错误,而未使用的导入只会减慢编译速度,随着程序随着时间的推移累积代码和程序员,这种效果会变得很大.出于这些原因,Go拒绝使用未使用的变量或导入编译程序,为长期构建速度和程序清晰度交换短期方便性.

仍然,在开发代码时,临时创建这些情况很常见,在程序编译之前必须编辑它们会很烦人.

有些人要求使用编译器选项来关闭这些检查,或者至少将它们减少为警告.这样的选择还没有被添加,但是,因为编译器选项不会影响语言的语义,因为围棋编译器不报告警告,只是防止编译错误.

没有警告有两个原因.首先,如果它值得抱怨,那么值得在代码中修复.(如果不值得修复,则不值得一提.)其次,让编译器生成警告会鼓励实现警告可能使编译噪声的弱情况,掩盖应该修复的实际错误.

不过,很容易解决这个问题.使用空白标识符可以在开发过程中保留未使用的内容.

您可能要做的是在暂时想要排除某些内容时使用空白标识符,例如

import (
    "fmt"
    _ "time"  // This will make the compiler stop complaining
)
Run Code Online (Sandbox Code Playgroud)

如今,大多数Go程序员使用goimports工具,它自动重写Go源文件以获得正确的导入,从而在实践中消除了未使用的导入问题.当编写Go源文件时,该程序可以轻松连接到大多数编辑器以自动运行.

  • 真的,有必要创建一个单独的工具 `goimports` 来解决这个问题吗?此外,`_ "time"` 与 `// "time"` 实际上相同,无论哪种方式都很烦人。我确实喜欢他们在 Golang 上做出的大多数决定,但这个决定很糟糕。 (2认同)