第 3 章 打包和工具链
3.2 导入
导入包需要使用关键字 import,它会告诉编译器你想引用该位置的包内的代码。如果需要导入多个包,习惯上是将 import 语句包装在一个导入块中
编译器会按照下面的顺序查找包:
Go 的安装目录
Go 环境变量(GOPATH)指定的目录
3.2.1 远程导入
Go 语言的工具链本身就支持从这些网站及类似网站获取源代码。
这个获取过程使用 go get 命令完成。go get 将获取任意指定的 URL 的包,或者一个已经导入的包所依赖的其他包。由于 go get 的这种递归特性,这个命令会扫描某个包的源码树,获取能找到的所有依赖包
3.2.2 命名导入
重名的包可以通过命名导入来导入。命名导入是指,在 import 语句给出的包路径的左侧定义一个名字,将导入的包命名为新名字。
当你导入了一个不在代码里使用的包时,Go 编译器会编译失败,并输出一个错误。Go 开发 团队认为,这个特性可以防止导入了未被使用的包,避免代码变得臃肿。
3.3 函数init
每个包可以包含任意多个 init 函数,这些函数都会在程序执行开始的时候被调用。所有被 编译器发现的 init 函数都会安排在 main 函数之前执行。init 函数用在设置包、初始化变量或者其他要在程序运行前优先完成的引导工作。