每个包都有一组类型,函数,变量等。我们将它们称为 实体 。每个实体可以导出(名称以大写字母开头),也可以不导出(名称以小写字母开头)。
一个包只能访问另一个包的导出实体。为此,需要这样做
import,这将使导出的实体可用包名称作为标识符。例:
import "github.com/revel/revel"
将获取
revel包的所有导出实体,可使用
revel.前缀使用。如中的
revel.Controller,这是包中
Controller定义的类型
revel。
您可以通过在导入路径前面加上所需的标识符来为软件包标识符加上别名。例:
import rev "github.com/revel/revel"
将导入所有
revel具有标识符的实体
rev。如此
revel.Controller成为
rev.Controller。如果您有多个具有相同名称的软件包,或者一个名称太长的软件包,则很有用。
另外,您可以通过将别名别名为空白标识符来匿名导入软件包:
import _ "github.com/revel/revel"
它将导入包,但不能让您访问导出的实体。它对于诸如驱动程序之类的东西很有用,您需要导入但永不访问。数据库驱动程序是一个常见的示例,该数据库驱动程序将自身注册到
database/sql软件包中,因此您无需直接访问它们。
作为奖励,您还可以在本地导入软件包,方法是使用
.标识符作为别名。这样就可以在没有标识符的情况下使用导出的实体,就像在同一包中定义它们一样。
How to properly import your packages is up to you. The general convention is
to never alias if you can manage it, to hide the package that you don’t need
to access but still need to import (database drivers), and that’s all. You
really never need to import locally a package, even if some tutorials or
frameworks do it for simplicity’s sake.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)