Skip to content

Latest commit

 

History

History
50 lines (34 loc) · 1.69 KB

29 - 如何解决声明但未使用这个恼人的错误.md

File metadata and controls

50 lines (34 loc) · 1.69 KB

https://stackoverflow.com/questions/21743841/how-to-avoid-annoying-error-declared-and-not-used

问题

我在学习 Go 时,遇到编译时不能有未使用的变量或包的问题,实在有点烦人。

这真的阻碍了我的进度。比如我导入一个包并打算之后再使用时或将一些代码取消注释来测试时,这样每次都必须注释所有引用来解决错误。

有没有什么办法来禁用 Go 中的这项检查?

回答

这种错误是为了逼迫你写更好的代码,保证你使用了所有声明的变量和导入的包。这让其他人可以更好的读懂你写的代码(它保证了所有声明的变量都有用),并且避免了一些大便代码。

但你非要跳过这个错误的话,可以使用 空标识符_):

package main

import (
    "fmt" // imported and not used: "fmt"
)

func main() {
    i := 1 // i declared and not used
}

可以改为:

package main

import (
    _ "fmt" // no more error
)

func main() {
    i := 1 // no more error
    _ = i
}

就像 kostix 在下面的评论说的那样,可以在 FAQ 中找到 Go 团队官方的回答:

The presence of an unused variable may indicate a bug, while unused imports just slow down compilation. Accumulate enough unused imports in your code tree and things can get very slow. For these reasons, Go allows neither.

译:

未使用的导入包会使编译变慢,而未使用的变量可能会导致 bug。在你的代码树中积累一定量的未使用导入包会让工作变得非常慢。因此,Go 不允许这些情况出现。