脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Golang - 一文详解go mod依赖管理详情

一文详解go mod依赖管理详情

2022-07-31 14:23树獭叔叔​​​​​​​ Golang

这篇文章主要介绍了一文详解go mod依赖管理详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下

1. go的依赖管理发展

一文详解go mod依赖管理详情

  • GOPATH 所有的依赖都放置在同一路径下,可以复用下载的依赖,但是当不同项目需要依赖不同版本的依赖时,就很容易出现冲突问题。
  • govendor 解决了依赖库版本不一致的问题,但是不好控制(了解即可)
  • go mod 使用go.mod文件管理以来的版本,通过go get下载依赖

2. go.mod 文件分析

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
module xx/xx/xx/v2
go 1.16
require (
        xx/xx/xx v1.3.3
        xx/xx/xx v0.0.0-20200330080233-e4ea8bd1cbed
    xx/xx/xx v2.2.1+incompatible
    xx/xx/xx v0.3.0 // indirect
)
exclude (
    xx/xx/xx v1.3.3-rc.0
)
 
replace xx/xx/xx => xx/xx v1.3.3
 
retract (
    v1.0.0 // 废弃的版本,请使用v1.1.0
)

module xx/xx/xx/v2是指该项目的module路径,/v2是指版本信息,可以省略。

go 1.16是指项目需要的最低go的版本

require()是项目需要的其他依赖:

  • xx/xx/xx v1.3.3指明了项目需要的依赖以及版本号。
  • xx/xx/xx v0.0.0-20200330080233-e4ea8bd1cbed是时间戳性质的版本号。
  • xx/xx/xx v0.3.0 // indirect是指依赖需要的依赖
  • xx/xx/xx v2.2.1+incompatible是指依赖的库的major版本大于引用的版本,不合规范。

exclude()指引用依赖时,跳过某些版本

replace xx/xx/xx => xx/xx v1.3.3指替换某些依赖

retract()声明废弃的版本

3. go mod依赖下载工具

go get xx/xx/x@${parameter}

${parameter}可以选择的参数如下: 

一文详解go mod依赖管理详情

go mod tidy 根据go.mod文件添加或者删除项目所需要的依赖

4. 可能出现的问题汇总

go get -u xx/xx/x

这个操作会升级依赖的依赖,有可能会引发依赖版本不兼容问题导致的编译不通过,比如thrift的0.13与0.14不兼容。

循环依赖问题:

一文详解go mod依赖管理详情

要注意避免循环依赖问题。

到此这篇关于一文详解go mod依赖管理详情的文章就介绍到这了,更多相关go mod依赖管理内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://juejin.cn/post/7109880275441549342

延伸 · 阅读

精彩推荐
  • Golang深入理解Go语言中的Dispatcher

    深入理解Go语言中的Dispatcher

    最近看到了Go语言中的Dispatcher,但是在网上发现资料非常少,所以想着总结处理分享给大家,下面这篇文章主要给大家深入的介绍Go语言中Dispatcher的相关资...

    一时无两4292020-05-06
  • Golang使用Go语言时,谨防锁拷贝!

    使用Go语言时,谨防锁拷贝!

    相信大家对 Go 语言的锁拷贝问题并不陌生,那我们应该如何规范使用Go 语言才能规避这个问题呢?一起来看作者是如何处理的。...

    Golang来啦7322021-07-29
  • Golangmac下golang安装了windows编译环境后编译变慢

    mac下golang安装了windows编译环境后编译变慢

    这篇文章主要介绍了mac下golang安装了windows编译环境后编译变慢的处理方法,非常的简单,有相同问题的小伙伴可以参考下。 ...

    脚本之家3332020-04-25
  • Golanggo语言区块链实战实现简单的区块与区块链

    go语言区块链实战实现简单的区块与区块链

    这篇文章主要为大家介绍了go语言区块链的实战学习,来实现简单的区块与区块链示例过程,有需要的朋友可以借鉴参考下,希望能够有所帮助...

    小生凡一11382021-11-26
  • GolangGo语言实现IP段范围校验示例

    Go语言实现IP段范围校验示例

    这篇文章主要介绍了Go语言实现IP段范围校验示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面...

    Meng小羽3592020-09-22
  • Golanggo zero微服务实战性能优化极致秒杀

    go zero微服务实战性能优化极致秒杀

    这篇文章主要为大家介绍了go-zero微服务实战性能优化极致秒杀功能实现,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加...

    kevinwan9002022-07-14
  • Golang深入了解Golang的指针用法

    深入了解Golang的指针用法

    与C语言一样,Go语言中同样有指针,通过指针,我们可以只传递变量的内存地址,而不是传递整个变量,这在一定程度上可以节省内存的占用。本文将通过...

    言淦6952022-07-09
  • Golang使用go实现适配器模式

    使用go实现适配器模式

    这篇文章主要介绍了使用go实现适配器模式,这个模式就是用来做适配的,它将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作...

    Rick.lz4312021-12-02