go语言软件包导入:导入有或没有下划线的软件包之间有什么区别?
在导入GO套件时,您可以使用指定的导入(无凸台)或空白导入(带有下划线)。 关键区别在于如何将导入的软件包的内容提供给您的代码。您可以通过其名称直接使用它们(例如,)。import "fmt"
afmt
空白导入fmt.Println()
,例如
>,也导入
> package,但它> notimport _ "fmt"
不使导出的导出式标识符直接访问。 唯一的效果是将执行软件包的fmt
函数(如果存在)。 这对于执行副作用的软件包至关重要,例如注册处理程序或初始化全球状态,而无需用其导出的符号污染当前名称空间。 在空白导入>。init()
fmt.Println()
之后,您不能直接调用fmt
>
>为什么我选择导入一个带有下划线而不是没有人的go包?
>空白导入之间的选择完全取决于您的意图,这完全取决于您的意图:
>>>>
-
init()
net/http
Print
fmt
空白导入:
>当导入软件包的唯一目的是执行其
函数时,请使用空白导入。这通常用于执行初始化任务的软件包,例如注册HTTP处理程序(例如,使用之类的库)或设置数据库连接。 您不需要访问该软件包的导出功能或类型。 使用空白导入可以使您的命名空间更清洁,并避免潜在的命名冲突。 例如,如果您具有称为>和>的函数,则指定名称碰撞。本质上,空白导入是一种利用包装初始化的副作用的方式,而无需使代码的名称空间混乱,而无需使您的underscore在go interscore中使用underscore?软件包的进口大大改善了代码组织和可维护性,尤其是在较大的项目中:
- 降低命名空间污染:空白导入可阻止不必要的不必要的引入潜在的众多标识符到包装的命名空间中。 这降低了命名碰撞的风险,并使您的代码易于阅读和理解。 范围中的标识符越少,意外覆盖的可能性就越小。可以立即清楚为什么要导入特定的软件包。
- >增强性可维护性:随着您项目的增长,清洁器名称空间的好处变得更加明显。 对导入软件包的更改或更新不太可能引起意外后果。 追踪和理解依赖关系更容易。
- >在GO toppart Imports Impercors中使用下划线会影响性能或编译时间?>使用GO Package Imports中的下划线对性能或编译时间具有可忽略的影响。 GO编译器经过高度优化,可以有效处理命名和空白导入。 唯一的区别是,通过空白导入,导入的软件包的代码仍会加载并执行其函数,但未将其导出的成员添加到您的软件包的符号表中。 与总体执行时间和汇编过程相比,这个小型开销微不足道。 改进的代码可读性和可维护性远远超过任何较小的性能注意事项。
>
以上是Go语言包导入:带下划线和不带下划线的区别是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!