gitee.com/h79/goutils@v1.22.10/common/version/version.go (about) 1 package version 2 3 import ( 4 "gitee.com/h79/goutils/common/stringutil" 5 "strings" 6 ) 7 8 type Version struct { 9 version string 10 major int 11 minor int 12 } 13 14 func Build(version string) Version { 15 v := strings.Split(version, ".") 16 17 var vInt []int 18 for _, val := range v { 19 vInt = append(vInt, stringutil.StringToInt(val)) 20 } 21 major := 0 22 minor := 0 23 vLen := len(vInt) 24 if vLen == 1 { 25 major = vInt[0] 26 } else if vLen == 2 { 27 major = vInt[0]<<16 + vInt[1] 28 } else if vLen == 3 { 29 major = vInt[0]<<16 + vInt[1] 30 minor = vInt[2] 31 } else if vLen >= 4 { 32 major = vInt[0]<<16 + vInt[1] 33 minor = vInt[2]<<16 + vInt[3] 34 } 35 return Version{version: version, major: major, minor: minor} 36 } 37 38 func (v Version) Compare(that Version) int { 39 if v.major > that.major { 40 return 1 41 } else if v.major < that.major { 42 return -1 43 } 44 if v.minor > that.minor { 45 return 1 46 } else if v.minor < that.minor { 47 return -1 48 } 49 return 0 50 } 51 52 func (v Version) Major() int { 53 return v.major 54 } 55 56 func (v Version) Minor() int { 57 return v.minor 58 }