1、package
- 基本复用模块单元,以首字母大写来表明可被包外代码访问
- 代码的package可以和所在目录不一致
- 同一目录里的Go代码的package要保持一致,取名不能错误
2、init方法
- 在main被执行前,所有依赖的package的init方法都会被执行
- 不同包的init函数按照包导入的依赖关系决定执行顺序,Go语言可以自动处理这种依赖关系
- 每个包可以有多个init函数
- 包的每个源文件也可以有多个init函数,这点比较特殊
3、远程包使用注意事项
- 通过go get来获取远程依赖,go get -u 强制从网络更新远程依赖
- 注意代码在Github上的组织形式,以适应go get,直接以代码路径开始,不要有src
4、Go未解决的依赖问题
- 同一环境下,不同项目使用同一包的不同版本
- 无法管理对包的特定版本依赖
5、Go解决依赖的扩展方法——vendor
随着Go 1.5 release版本的发布,vendor目录被添加到除了GOPATH和GOROOT之外的依赖目录查找的解决方案。在Go 1.6之前,你需要手动的设置环境变量
查找依赖包路径的解决方案如下:
- 当前包下的vendor目录
- 向上级目录查找,直到找到src下的vendor目录
- 在GOPATH下面查找依赖包
- 在GPROOT目录下查找