package version import ( "strconv" "strings" ) type Version string func (me Version) compareTo(other Version) int { var ( meTab = strings.Split(string(me), ".") otherTab = strings.Split(string(other), ".") ) for i, s := range meTab { var meInt, otherInt int meInt, _ = strconv.Atoi(s) if len(otherTab) > i { otherInt, _ = strconv.Atoi(otherTab[i]) } if meInt > otherInt { return 1 } if otherInt > meInt { return -1 } } if len(otherTab) > len(meTab) { return -1 } return 0 } func (me Version) LessThan(other Version) bool { return me.compareTo(other) == -1 } func (me Version) LessThanOrEqualTo(other Version) bool { return me.compareTo(other) <= 0 } func (me Version) GreaterThan(other Version) bool { return me.compareTo(other) == 1 } func (me Version) GreaterThanOrEqualTo(other Version) bool { return me.compareTo(other) >= 0 } func (me Version) Equal(other Version) bool { return me.compareTo(other) == 0 }