在GO语言中,导入了包,却不在代码中使用它,是非法的。当这么做时,编译器是会报错的。其原因是为了避免导入过多未使用的包,从而导致编译时间显著增加。如下代码:
1
2
3
4
5
6
7
8
|
package main import ( "geometry/rectangle" // 导入自定的包 ) func main() { } |
上面的程序将会抛出错误 imported and not used: "geometry/rectangle"
然而,在程序开发的活跃阶段,又常常会先导入包,而暂不使用它。遇到这种情况就可以使用空白标识符 _。
下面的代码可以避免上述程序的错误:
1
2
3
4
5
6
7
|
package main import ( "geometry/rectangle" ) var _ = rectangle.Area // 错误屏蔽器 func main() { } |
var _ = rectangle.Area 这一行屏蔽了错误。我们应该了解这些错误屏蔽器(Error Silencer)的动态,在程序开发结束时就移除它们,包括那些还没有使用过的包。由此建议在 import 语句下面的包级别范围中写上错误屏蔽器。
有时候我们导入一个包,只是为了确保它进行了初始化,而无需使用包中的任何函数或变量。例如,我们或许需要确保调用了 rectangle 包的 init 函数,而不需要在代码中使用它。这种情况也可以使用空白标识符,如下所示。
1
2
3
4
5
6
7
8
|
package main import ( _ "geometry/rectangle" ) func main() { } |
运行上面的程序,会输出 rectangle package initialized。尽管在所有代码里,我们都没有使用这个包,但还是成功初始化了它。
原文链接:https://blog.csdn.net/yuanlaidewo000/article/details/80811144