濮阳杆衣贸易有限公司

主頁 > 知識庫 > go mod 使用舊版本 版本號指定方式

go mod 使用舊版本 版本號指定方式

熱門標(biāo)簽:外呼系統(tǒng)用什么卡 百度地圖標(biāo)注后傳給手機(jī) 電話機(jī)器人軟件免費(fèi) 涿州代理外呼系統(tǒng) 壽光微信地圖標(biāo)注 阿克蘇地圖標(biāo)注 評價(jià)高的400電話辦理 excel地圖標(biāo)注分布數(shù)據(jù) 外呼系統(tǒng)顯本地手機(jī)號

在使用go mod的過程中,發(fā)現(xiàn)不容易指定版本號

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

正常使用都沒有問題,但是當(dāng)引用的項(xiàng)目用了舊的代碼, 這時(shí)候必須使用舊的版本,無法指定版本,不知道如何入手

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

這個(gè)時(shí)候在 go.mod文件中 require 里面加上 github.com/kubernetes/cloud-provider 2bf8e45

此時(shí)會自動生成版本號, 其中 2bf8e45 這個(gè)是在github上找到源碼的特定的提交 commit 號, 想使用舊版本的話, 找到對應(yīng)的tag或分支 找到 commit 號

這個(gè)commit號也可以使用tag號來替換

例如

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

然后使用replace來替換,require里面的 github.com/kubernetes/cloud-provider 2bf8e45 會自動變成

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

此時(shí),我們把它刪除并復(fù)制到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

效果這樣的

原來使用的新版本號不用動,主要換了replace

補(bǔ)充: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))
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • 在Golang代碼中如何自動生成版本號的方法示例
  • golang值類型轉(zhuǎn)換成[]uint8類型的操作
  • golang 監(jiān)聽服務(wù)的信號,實(shí)現(xiàn)平滑啟動,linux信號說明詳解
  • GO語言ini配置文件的讀取的操作
  • go語言中iota和左移右移的使用說明

標(biāo)簽:吐魯番 蘭州 欽州 重慶 雞西 銅川 梅河口 汕頭

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《go mod 使用舊版本 版本號指定方式》,本文關(guān)鍵詞  mod,使,用舊,版本,版,本號,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《go mod 使用舊版本 版本號指定方式》相關(guān)的同類信息!
  • 本頁收集關(guān)于go mod 使用舊版本 版本號指定方式的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    白河县| 肇源县| 林甸县| 察雅县| 合水县| 大名县| 怀柔区| 敦煌市| 屯昌县| 桂东县| 当涂县| 泰宁县| 库尔勒市| 拉孜县| 霞浦县| 安康市| 丽水市| 两当县| 深州市| 宣恩县| 蒙山县| 扶绥县| 封丘县| 义马市| 邵阳县| 万年县| 宁国市| 西丰县| 视频| 道真| 康马县| 淅川县| 文水县| 台中县| 乡城县| 廉江市| 邵武市| 北京市| 凤凰县| 夏河县| 彭水|