go 比较两个字符串的版本号大小

1package main 2 3import "fmt" 4 5func VersionOrdinal(version string) string { 6 // ISO/IEC 14651:2011 7 const maxByte = 1<<8 - 1 8 vo := make([]byte, 0, len(version)+8) 9 j := -1 10 for i := 0; i < len(version); i++ { 11 b := version[i] 12 if '0' > b || b > '9' { 13 vo = append(vo, b) 14 j = -1 15 continue 16 } 17 if j == -1 { 18 vo = append(vo, 0x00) 19 j = len(vo) - 1 20 } 21 if vo[j] == 1 && vo[j+1] == '0' { 22 vo[j+1] = b 23 continue 24 } 25 if vo[j]+1 > maxByte { 26 panic("VersionOrdinal: invalid version") 27 } 28 vo = append(vo, b) 29 vo[j]++ 30 } 31 return string(vo) 32} 33 34func main() { 35 versions := []struct{ a, b string }{ 36 {"1.05.00.0156", "1.0.221.9289"}, 37 // Go versions 38 {"1", "1.0.1"}, 39 {"1.0.1", "1.0.2"}, 40 {"1.0.2", "1.0.3"}, 41 {"1.0.3", "1.1"}, 42 {"1.1", "1.1.1"}, 43 {"1.1.1", "1.1.2"}, 44 {"1.1.2", "1.2"}, 45 } 46 for _, version := range versions { 47 a, b := VersionOrdinal(version.a), VersionOrdinal(version.b) 48 switch { 49 case a > b: 50 fmt.Println(version.a, ">", version.b) 51 case a < b: 52 fmt.Println(version.a, "<", version.b) 53 case a == b: 54 fmt.Println(version.a, "=", version.b) 55 } 56 } 57}
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

List的Select 和Select().tolist()

List<PersondelpnewList<Person{newPerson{Id1,Name"小明1",Age11,Sign0},newPerson{Id2,Name"小明2",Age12,

mysql设置时区

mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0