2.3 导入声明

源文件可能包含一组导入声明,声明中包含声明的文件依赖于导入包的功能。

导入的包是程序的一部分,它们与程序的源代码一起在本地机器上编译。

导入声明以关键字 import 开头,后跟一个或多个“导入规范”,它允许访问导入规范中指定的那些包的导出标识符。

导入规范包括指定要导入的包的“导入路径”。导入路径前面可以有选择地

  • 句点(.)或者

  • 在导入源文件中用于访问导入包的标识符。

以下 import 语句导入了目录“lib/math”中的一个包。

import   "lib/math"

如果导入的包的 package 子句为 package mathematics,并且它包含一个名为 Cosine 的导出函数声明,那么在导入源文件中可以将函数引用为 mathematics.Cosine。如果导入的包的 package 子句为 package math,则导入的包名默认为 math,并且 Cosine 函数可以引用为 math.Cosine

如前所述,按照惯例,包目录路径的最后一个路径段通常用作包名。也就是说,在目录 …/lib/math 中的源文件通常属于名为 math 的包,尽管这不是必需的。

可以使用与导入源文件中声明的名称不同的名称(或别名)访问导入的包。

例如,以下带有显式名称 m 的 导入语句允许在导入源文件中引用导出标识符 Cosinem.Cosine

import m "lib/math"

如果在该位置出现句点(.),那么该包的 package 块中声明的所有导出标识符都将在导入源文件的 文本块中自动声明。它们必须在没有限定符的情况下访问。

import . "lib/math" 

使用上述示例,在导入源文件中应简单地引用导出名称 Cosine,而无需任何包限定符。

import 语句可以包括多个圆括号中的导入规范。下面是一个示例:

import (
    "lib/math"
    sci "lib/science"
)

应该注意,Go 语言规范并没有精确指定如何解释导入路径字符串。这是实现相关的。

例如,对于同一模块中的本地包,导入路径可以是导入包相对于导入源文件路径的相对路径。(但是请参见“模块”章节。)对于计算机外的包,它可以是远程源代码存储库的 URL 的子字符串,其中找到或以其他方式标识导入的包。这是因为标准 go build 工具链使用了这些约定。

最后更新于