package介绍
1.基本复用模块单元
以首字母大写来表明可以被包外代码访问 小写字母开头的将不能被包外访问
2.代码的package可以和所在的目录不一致
3.同一个目录中的Go的代码的package要保持一致
init方法
1.在main被执行前,所有依赖的package的init方法都会被执行
2.不同包的init函数按照包导入的依赖关系决定执行顺序
3.每个包可以有多个init函数
4.包的每个源文件也可以有多个init函数,这点比较特殊
远程package
go get -u -u 表示每次都从远程服务器拉取最新版本的包而不使用本地缓存的包
vendor路径
vendor目录被添加到除了GOPATH和GOROOT之外的依赖目录查找。解决了不同项目各自依赖不同版本的问题
package查找流程
1.当前包下的vendor目录
2.逐级向上级目录查找vendor目录,直到src目录下的vendor目录
3.在GOPATH目录下查找依赖包
4.在GOROOT目录下查找依赖包
包导入语法
import 导入的是包目录(path),不是包
包是 package packname
src下面的所有目录都称为包目录
所有导入的包路径在后面必须被引用
匿名包
没有名字的包
import _ "fmt" 调用包里面的初始化函数
在go源码文件中定义init()函数 当此go文件被导入的时候会自动执行init函数。一个函数返回多个值 如果调用函数的时候不需要某个返回值 就可以用_来取代接收变量
别名包用途
1.包名太长
2.包名冲突