Go语言学习07-包和依赖管理
Go语言学习07-包和依赖管理
package
基本复用模块单元
以首字母大写来表明可被包外代码访问
代码的 package 可以和所在的目录不一致
同一目录里的 Go 代码的 package 要保持一致
通过
go get
来获取远程依赖go get -u
强制从网络更新远程依赖注意代码在 GitHub 上的组织形式, 以适应
go get
直接以代码路径开始, 不要有 src
init 方法
- 在 main 被执行前, 所有依赖的 package 的 init 方法都会被执行
- 不同包的 init 函数按照包导入的依赖关系决定执行顺序
- 每个包可以有多个init函数
- 包的每个源文件也可以有多个init函数, 这点比较特殊
Go 未解决的依赖问题
- 统一环境下, 不同项目使用同一包的不同版本
- 无法管理对包的特定版本的依赖
vendor 路径
随着Go 1.5 release 版本的发布, vendor目录被添加到除了GOPATH 和GOROOT之外的依赖目录查找的解决方案。在Go 1.6之前,你需要手动的设置环境变量
查找依赖包路径的解决方案如下:
- 当前包下的 vendor 目录
- 向上级目录查找, 知道找到 src 下的 vendor 目录
- 在 GOPATH 下面查找依赖包
- 在 GOROOT 目录下查找
常用的依赖管理工具
godep https://github.com/tools/godep
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 技术匝记簿!
评论