Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > Go mod兼容性问题

Go mod兼容性问题及解决

作者:跟派大星学编程

这段文章主要讨论了Go语言中包的导入兼容性问题,强调新包必须向后兼容旧包,并提供了两种解决方案以确保不同版本包的共存

Go mod兼容性问题

模块在 Go 中确定了一个重要的原则,即 导入兼容性规则

如果旧包和新包的导入路径相同,新包必须向后兼容旧的包

所以一旦你依赖了某个包的两个版本,那么较低版本的将会被忽略。

举个例子

所以针对这个情况,依赖的项目C如果做升级,一定要做兼容性升级,也就是你升级V2的时候不能把项目 C 的 V1 版本里面的东西删掉

如果说真的想删或者大改动怎么办?

有两种解决方案

改动小的推荐用方案1,改动比较大的话推荐用方案2

  1. 修改B项目,将其引用改为V2版本,并修改代码
  2. 可以修改项目 C 的 go.mod 文件加一个 v2的后缀。

比如

module github.com/pibigstar/go-demo

go 1.14

你将其调整为

module github.com/pibigstar/go-demo/v2

go 1.14

这样在 项目A中就可以引用v2版本,项目B中还可以继续引用v1版本。使两个版本可以共存。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文