package main import ( "strconv" ) func compareVersion(version1 string, version2 string) int { idx1, idx2 := 0, 0 for idx1 < len(version1) || idx2 < len(version2) { part1 := nextPartOfVersion(version1, &idx1) part2 := nextPartOfVersion(version2, &idx2) if part1 < part2 { return -1 } else if part1 > part2 { return 1 } } return 0 } func nextPartOfVersion(version string, beg *int) int { length := len(version) if *beg >= length { return 0 } var end int for end = *beg + 1; end < length; end++ { if version[end] == '.' { break } } val, _ := strconv.Atoi(version[*beg:end]) *beg = end + 1 return val } // func main() { // println(compareVersion("1.0.1", "1")) // println(compareVersion("1.0.1", "2")) // println(compareVersion("1.0.0.0", "1")) // }