如何禁用Golang未使用的导入错误

默认情况下,将未使用的导入视为错误,迫使您删除导入。 我想知道是否有一些希望改变这种行为。 例如减less警告。

我发现这个问题非常烦人,使我无法享受在Go编码。 例如,我正在testing一些代码,禁用段/function。 lib中的一些函数不再使用(例如fmt,errors,whatever),但是我需要在testing完成后重新启用函数。 现在程序将不会编译,除非我删除这些import。 几分钟后,我需要重新导入lib。 在开发GAE程序时,我一次又一次地做这个过程。

TBH,这是我在编程语言中看到的最愚蠢的东西。 如果这不是GAE的性能优势,我甚至不会去碰Go。

var _ = fmt.Printf技巧在这里很有帮助。

我也有同样的问题。 我理解为什么他们实现语言来禁止不使用的导入和variables,但我个人发现这个function令人讨厌写我的代码。 为了解决这个问题,我改变了我的编译器,允许可选的标志允许我的代码中未使用的variables和导入。

如果你有兴趣,你可以在https://github.com/dtnewman/modified_golang_compiler看到这个。;

现在,我可以简单地运行代码,如go run -gcflags'-unused_pkgs'test.go ,它不会抛出这些“未使用的导入”错误。 如果我省略这些标志,那么它将返回到不允许未使用的导入的默认值。

这样做只需要进行一些简单的更改。 去纯粹主义者可能会不满意这些变化,因为有充足的理由不允许未使用的variables/import,但我个人同意你,这个问题使得更不愉快的代码在Go这就是为什么我对这些变化编译器。

使用goimports 。 它基本上是由Brad Fitzpatrick编写的go fmt的一个分支,现在被包含在go工具包中。 您可以将您的编辑器configuration为在您保存文件时运行它。 你再也不用担心这个问题了。

在包名称之前添加_下划线将忽略未使用的导入错误。

下面是一个如何使用它的例子:

 import ( "log" "database/sql" _"github.com/go-sql-driver/mysql" ) 

要仅为其副作用(初始化)导入包,请使用空白标识符作为显式包名称。

浏览https://golang.org/ref/spec#Import_declarations

如果您在开发和testing时使用fmt软件包进行常规打印以进行控制,那么您可能会在日志包中find更好的解决scheme。

if false { ... }使用if false { ... }注释掉一些代码。 大括号内的代码必须在语法上正确,否则可能是无意义的代码。

把它放在你的文档之上,忘掉未使用的导入

 import ("fmt";"bufio";"os";"path/filepath") func iiiiiiiiiiii(i interface{}) { fmt.Println("");i=bufio.Writer{};i=os.File{};filepath.IsAbs("") }