包的导入——Golang

所有Go语言的程序都会组织成若干组文件,每组文件被称为一个包。这样每个包中的代码都可以作为很小的复用单元,被其他项目引用。
所有的.go文件,除了空行和注释,都应该在第一行声明自己所属的包。

导入包需要使用关键字import,他会告诉编译器你想引用该位置的包内的代码。如果需要导入多个包,习惯上是将import语句包装在一个导入块中。建议多个包名按照首字母的顺序进行排列。
代码示例:

import (
	"fmt"
	"strings"
)

Go编译器会使用Go环境变量设置的路径,通过引入的相对路径来查找磁盘上的包。标准库中的包会在安装Go的路径下找到。Go开发者创建的包会在GOPATH环境变量指定的目录里查找。
一旦编译器找到一个满足import语句的包,就停止下一步查找。编译器会首先查找Go的安装目录,然后才会按顺序查找GOPATH变量里列出的目录。

远程导入

目前的大势所趋是,使用分布式版本控制系统(Distributed Version Control Systems,DVCS) 来分享代码,如 GitHub、Launchpad 还有 Bitbucket。Go 语言的工具链本身就支持从这些网站及类似网站获取源代码。Go 工具链会使用导入路径确定需要获取的代码在网络的什么地方。
例如:

import "github.com/spf13/viper"

用导入路径编译程序时,go build 命令会使用 GOPATH 的设置,在磁盘上搜索这个包。事实上, 这个导入路径代表一个 URL,指向 GitHub 上的代码库。如果路径包含 URL,可以使用 Go 工具链从 DVCS 获取包,并把包的源代码保存在 GOPATH 指向的路径里与 URL 匹配的目录里。这个获取过程 使用 go get 命令完成。go get 将获取任意指定的 URL 的包,或者一个已经导入的包所依赖的其他包。由于go get的这种递归特性,这个命令会扫描某个包的源码树,获取能找到的所有依赖包。

命名导入

如果要导入的多个包具有相同的名字,会发生什么?例如,既需要 network/convert 包 来转换从网络读取的数据,又需要 file/convert 包来转换从文本文件读取的数据时,就会同 时导入两个名叫 convert 的包。这种情况下,重名的包可以通过命名导入来导入命名导入是指,在 import 语句给出的包路径的左侧定义一个名字,将导入的包命名为新名字

当你导入了一个不在代码里使用的包时,Go 编译器会编译失败,并输出一个错误。Go 开发 团队认为,这个特性可以防止导入了未被使用的包,避免代码变得臃肿

有时候,用户可能需要导入一个包,但是不需要引用这个包的标识符。这种情况下可以使用空白标识符_来重命名这个导入。代码如下

import _"fmt"

参考《Go in action》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值