引言
Go自带100多个包,可以为大多数应用程序提供基础。Go社区是一个茁壮成长的生态环境,其中鼓励包设计、共享、重用以及改进,已经发布的很多包,可以在https://godoc.org
找到。
包管理系统的目的是为了对关联的特性进行分类,组织成便于理解和修改的单元,使其与程序的其它包保持独立,从而有助于设计和维护大型程序。
Go的包管理类似于Java的依赖管理,比如常用的:maven,不同的是,Go的包管理不需要指定GAV坐标,而是需要调用者主动下载包文件。
包通过控制名字是否导出使其对包外可见来提供封装能力,限制包成员的可见性,从而隐藏API后面的辅助函数和类型,允许包的维护者修改包的实现而不影响包外部的代码。限制变量的可见性也可以隐藏变量,这样使用者仅可以通过导出函数来对其访问和更新,它们可以保留自己的不变量以及在并发程序中实现互斥访问。
导入路径
每一个包都通过一个唯一的的字符串进行标识,它称为导入路径。如下:
import "fmt"
包的声明
在每一个Go源文件的开头都需要进行包生明,它的主要目的是当该包被其他包引入的时候作为其默认的标识符。
例如,math/rand
包中每一个文件的开头都是package rand
,这样当你导入这个包时,可以访问它的成员,比如:rand.Int、rand.Float64
等。
package main
import(
"fmt"
"math/rand"
)
func main(