01
概念
在 Go 语言中,包由一个或多个保存在同一目录的源码文件组成,包名与目录名无关,但是通常大家习惯包名和目录名保持一致。同一目录的源码文件必须使用相同的包名。
包的用途类似于其他语言的命名空间,可以限制成员的作用域和访问权限。无论是否在同一源码文件的成员,只要在同一个包内,成员均可被访问。但是只有首字母大写的成员为导出成员,可以在包外访问。
除了基于首字母大小写控制访问权限,在 Go 语言中,还可以使用内部包机制来控制访问权限,内部包源码文件存放于包目录的子目录,内部包源码文件的导出成员仅能被其父目录下的包访问。
02
包声明
在 Go 语言中,每一个源码文件开头都必须使用关键字 package 进行包声明(定义包名)。主要目的是限制包内成员的作用域和访问权限,也是当前包被其他包导入时的标识符。包名是导入路径的最后一段,所以不同导入路径的包名可以相同。
03
包导入
04
包创建
在创建一个包时,尽量使用简短的包名,但是要尽可能保持包名的可读性和无歧义,如果需要用到与 go 关键字同名的包名,一般采用其复数形式。