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  }