func main() {
v1 := "1.2"
v2 := "1.2.1.2"
fmt.Println(VersionCompare(v1, v2)) // -1
}
// 版本号对比:v1 > v2 ==> 1 或 v1 < v2 ==> -1 或 v1 == v2 ==> 0
func VersionCompare(v1, v2 string) int {
sv1 := strsToSlice(v1)
sv2 := strsToSlice(v2)
s1Appended, s2Appended := apeendZreo(sv1, sv2)
for i := 0; i < len(s1Appended); i++ {
if s1Appended[i] > s2Appended[i] {
return 1
}
if s1Appended[i] < s2Appended[i] {
return -1
}
}
// 退出循环表示版本号相同
return 0
}
// 补全切片
func apeendZreo(s1, s2 []string) ([]string, []string) {
var count int
if len(s1) > len(s2) {
count = len(s1) - len(s2)
for i := 0; i < count; i++ {
s2 = append(s2, "0")
}
}
if len(s1) < len(s2) {
count = len(s2) - len(s1)
for i := 0; i < count; i++ {
s1 = append(s1, "0")
}
}
return s1, s2
}
func strsToSlice(version string) []string {
return strings.Split(version, ".")
}
func strToInt64(str string) int64 {
res, err := strconv.Atoi(str)
if err != nil {
fmt.Println("Invalid Number string")
return -1
}
return int64(res)
}
Golang版本号对比实现
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 对比版本号一般是为了实现版本更新的功能,弹窗提示用户更新或者直接跳转的App Store。 获取应用在App St...
- 今天遇到了一个小坑:使用etcdv3的时候,报了这么一堆错误 # github.com/coreos/etcd/c...
- 世上无难事,只怕有心人!大家好,我是爱学习的小黄牛。今天为大家分享的是 如何生成版本号。在工作中时常会遇到各种版本...
- 问题描述 当对Azure App Service应用进行安全扫描时,发现了HTTP/S请求的响应头中会包含服务端I...