golang:比较版本号大小

Posted IGuoSJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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))


以上是关于golang:比较版本号大小的主要内容,如果未能解决你的问题,请参考以下文章

golang学习笔记:安装&helloworld

前端js进行APP版本号比较方法

php 版本号 整数化 mysql存储入库 比较大小版本处理类,提供版本与数字互相转换

Java中高效的版本号比较

版本号带两个小数点的,如何比较大小?( NSStringCompareOptions )

165. Compare Version Numbers比较版本号的大小