Go语言空白表示符_的实例用法

时间:2022-11-26 17:43:19

在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