package sign import ( "strconv" "strings" ) // CompareVersions 比较两个版本号 // 返回: -1 (v1 < v2), 0 (v1 == v2), 1 (v1 > v2) func CompareVersions(v1, v2 string) int { parts1 := parseVersion(v1) parts2 := parseVersion(v2) maxLen := len(parts1) if len(parts2) > maxLen { maxLen = len(parts2) } for i := 0; i < maxLen; i++ { var p1, p2 int if i < len(parts1) { p1 = parts1[i] } if i < len(parts2) { p2 = parts2[i] } if p1 < p2 { return -1 } if p1 > p2 { return 1 } } return 0 } func parseVersion(v string) []int { v = strings.TrimPrefix(v, "v") parts := strings.Split(v, ".") result := make([]int, len(parts)) for i, p := range parts { n, _ := strconv.Atoi(p) result[i] = n } return result }