(三)Go语言的依赖管理

一.理论概述

    1. 依赖的概念

      我们不可能所有的编码都要自己写,我们需要大量引用第三方的库,依赖它来进行编译。

    2. 依赖管理的三个阶段GOPATH,GOVENDOR,go mod

       a. GOPATH: GOPATH顾名思义,就是go的环境目录,有以下几个特点

           - 默认在~/go(unix,linux),%USERUSERPROFILEUSERPROFILE%\go(windows)    [用户目录下的go]   ,它的管理方式是不管理,所有依赖都在gopath找,这样会导致一个问题:所有项目都放在这里,所有依赖的东西也放在这里,后面就会变得非常大

          - 历史:Google将20亿行代码,9百万个文件放在一个repo里         

          - 在实际操作当中有个注意事项,就是需要在gopath底下创建一个src文件,并且把项目和依赖都放入里面

       b. GOVENDOR

          - 在gopath方式管理依赖的时候会出现一个问题,比如project1需要用到依赖的库A(1.0版本),project2需要用到的依赖的库也还是A,但是它需要2.0版本,这时候他们又放在同一个目录底下,那到底引用谁的呢?这时候出现了vendor,即在project1目录底下建立一个vendor,project2目录底下建立一个vendor,将各自引用的库放在里面即可。

         - 这里要额外提一个知识点,就是go是如何寻找对应的库呢?它会先到go安装目录底下找对应找依赖库,再到gopath的src里找依赖库,如果加入了vendor会先在里面找。 vendor > gopath/src > go/src

        - 这时候衍生了大量第三方依赖管理工具:glide,dep,有点类似php中的composer (个人感觉)

       c. go mod 

         - Go Module是Go会在1.11中正式推出的包管理机制

        - 由go 命令统一管理,用户无需关心目录结构

        -  编译时是从GOPATH/pkg/mod下查找依赖

        - 更新依赖:go get[@v], go mod tidy 清除旧的信息

        - 初始化 go mod init

        - 将旧项目移到go mod,1.先初始化 go mod init 2.go build  ./...

        - 增加依赖,可以直接go get / import 代码里面加(build的时候会自动加载依赖,但是可能暂时没有提示)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值