现在,我可以简单地使用诸如 Go run-gcFlag’-used _ pkgs’test.go之类的命令运行代码,它不会抛出这些“未使用的导入”错误。如果我省略了这些标志,那么它将返回默认值,即不允许未使用的导入。
Doing this only required a few simple changes. Go purists will probably not be happy with these changes since there is good reason to not allow unused variables/imports, but I personally agree with you that this issue makes it much less enjoyable to code in Go which is why I made these changes to my compiler.
很多人已经有了合理的解释,我也承认原作者的意图。然而,Rob Pike 在不同的论坛中提到,Go 是一些其他主流编程语言缺乏或不容易实现的过程简化的结果。这是 Go 的语言语义,也是为了让编译速度更快,有很多东西被采用了,最初看起来效率很低。
简而言之,Go 中未使用的导入被认为是错误,因为它会阻塞程序并减慢编译速度。使用导入作为副作用(_)是一个解决方案,然而,当纯粹为了调试/测试而导入的有效导入和副作用混杂在一起时,我发现这有时会令人困惑,特别是当代码库很大并且有机会忘记和不无意中删除的时候,这可能会让其他工程师/审核人员感到困惑。我过去常常把没用过的注释掉,但是像 VS 代码和 Goland 这样流行的 IDE 可以很容易地使用 goimports,它可以很好地插入和删除导入。请参考链接了解更多信息,https://golang.org/doc/effective_go.html#blank_import