go mod 使用旧版本 版本号指定方式

作者:gs80140 时间:2024-05-21 10:26:17 

在使用go mod的过程中,发现不容易指定版本号

尤其是没有打tag的,不知道怎么指定版本号, 不知道有哪版本号

正常使用都没有问题,但是当引用的项目用了旧的代码, 这时候必须使用旧的版本,无法指定版本,不知道如何入手

尤其是k8s.io不知道是什么鬼, 从哪里看它的代码,只知道github.com

这个时候在 go.mod文件中 require 里面加上 github.com/kubernetes/cloud-provider 2bf8e45

此时会自动生成版本号, 其中 2bf8e45 这个是在github上找到源码的特定的提交 commit 号, 想使用旧版本的话, 找到对应的tag或分支 找到 commit 号

这个commit号也可以使用tag号来替换

例如


k8s.io/cli-runtime => github.com/kubernetes/cli-runtime kubernetes-1.14.2

go mod 使用旧版本 版本号指定方式

然后使用replace来替换,require里面的 github.com/kubernetes/cloud-provider 2bf8e45 会自动变成


github.com/kubernetes/cloud-provider v0.0.0-20190516232619-2bf8e45c8454

此时,我们把它删除并复制到replace 里面


k8s.io/apiserver => github.com/kubernetes/apiserver v0.0.0-20190516230822-f89599b3f645
k8s.io/cloud-provider => github.com/kubernetes/cloud-provider v0.0.0-20190516232619-2bf8e45c8454
sigs.k8s.io/yaml => github.com/kubernetes-sigs/yaml v1.1.0

效果这样的

go mod 使用旧版本 版本号指定方式

原来使用的新版本号不用动,主要换了replace

go mod 使用旧版本 版本号指定方式

补充:golang:比较版本号大小

看代码吧~


package main
import (
"fmt"
"strings"
)
var (
VersionBig = 1
VersionSmall = 2
VersionEqual = 0
)
func compareStrVer(verA, verB string) int {
verStrArrA := spliteStrByNet(verA)
verStrArrB := spliteStrByNet(verB)
lenStrA := len(verStrArrA)
lenStrB := len(verStrArrB)
if lenStrA != lenStrB {
panic("")
}
return compareArrStrVers(verStrArrA, verStrArrB)
}
func compareArrStrVers(verA, verB []string) int {
for index, _ := range verA {
littleResult := compareLittleVer(verA[index], verB[index])
if littleResult != VersionEqual {
return littleResult
}
}
return VersionEqual
}
func compareLittleVer(verA, verB string) int {
bytesA := []byte(verA)
bytesB := []byte(verB)
lenA := len(bytesA)
lenB := len(bytesB)
if lenA > lenB {
return VersionBig
}
if lenA < lenB {
return VersionSmall
}
return compareByBytes(bytesA, bytesB)
}
func compareByBytes(verA, verB []byte) int {
for index, _ := range verA {
if verA[index] > verB[index] {
return VersionBig
}
if verA[index] < verB[index] {
return VersionSmall
}
}
return VersionEqual
}
func spliteStrByNet(strV string) []string {
return strings.Split(strV, ".")
}
func main() {
versionA := "1.2.3.54"
versionB := "1.2.3.54"
fmt.Println(compareStrVer(versionA, versionB))
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持asp之家。如有错误或未考虑完全的地方,望不吝赐教。

来源:https://blog.csdn.net/gs80140/article/details/95320215

标签:go,mod,版本号,指定
0
投稿

猜你喜欢

  • Django如何继承AbstractUser扩展字段

    2023-08-24 06:19:27
  • python继承threading.Thread实现有返回值的子类实例

    2023-06-07 19:01:15
  • python保存图片的四个常用方法

    2023-10-03 15:06:37
  • JS操作Cookie写入和读取实例代码

    2024-04-22 13:07:30
  • Python调用Tkinter示例浅析

    2022-04-30 02:53:32
  • 从传文件功能看本地化

    2009-12-29 13:03:00
  • python lambda函数及三个常用的高阶函数

    2022-09-25 16:40:58
  • 如何实现对整个站点所有页面的操作?

    2010-05-19 21:20:00
  • python使用pygame模块实现坦克大战游戏

    2022-01-15 01:30:38
  • django settings.py 配置文件及介绍

    2022-01-17 12:52:44
  • Kibo 用于处理键盘事件的Javascript工具库

    2024-04-10 10:45:53
  • 间歇向上无缝翻滚代码

    2008-05-05 12:30:00
  • 利用Python进行图像的加法,图像混合(附代码)

    2021-06-22 20:28:44
  • 利用ASP输出excel文件一例

    2008-06-06 13:18:00
  • python设置windows桌面壁纸的实现代码

    2023-05-27 02:51:05
  • MySQL截取和拆分字符串函数用法示例

    2024-01-21 14:24:55
  • Python 相对路径报错:"No such file or directory"'原因及解决方法

    2021-08-12 05:34:00
  • Python首次安装后运行报错(0xc000007b)的解决方法

    2023-12-15 12:33:49
  • asp如何读取服务器上的驱动器?

    2009-11-18 20:50:00
  • ThinkPHP中url隐藏入口文件后接收alipay传值的方法

    2024-05-03 15:50:25
  • asp之家 网络编程 m.aspxhome.com