github.com/whatap/golib@v0.0.22/util/compare/CompareUtil.go (about) 1 package compare 2 3 import ( 4 "strings" 5 ) 6 7 func CompareToBytes(l []byte, r []byte) int { 8 switch { 9 case l == nil && r == nil: 10 return 0 11 case l == nil: 12 return -1 13 case r == nil: 14 return 1 15 } 16 l_sz := len(l) 17 r_sz := len(r) 18 for i := 0; i < l_sz && i < r_sz; i++ { 19 if l[i] > r[i] { 20 return 1 21 } 22 if l[i] < r[i] { 23 return -1 24 } 25 } 26 return l_sz - r_sz 27 } 28 func CompareToShorts(l []int16, r []int16) int { 29 switch { 30 case l == nil && r == nil: 31 return 0 32 case l == nil: 33 return -1 34 case r == nil: 35 return 1 36 } 37 l_sz := len(l) 38 r_sz := len(r) 39 for i := 0; i < l_sz && i < r_sz; i++ { 40 if l[i] > r[i] { 41 return 1 42 } 43 if l[i] < r[i] { 44 return -1 45 } 46 } 47 return l_sz - r_sz 48 } 49 func CompareToInts(l []int32, r []int32) int { 50 switch { 51 case l == nil && r == nil: 52 return 0 53 case l == nil: 54 return -1 55 case r == nil: 56 return 1 57 } 58 l_sz := len(l) 59 r_sz := len(r) 60 for i := 0; i < l_sz && i < r_sz; i++ { 61 if l[i] > r[i] { 62 return 1 63 } 64 if l[i] < r[i] { 65 return -1 66 } 67 } 68 return l_sz - r_sz 69 } 70 func CompareToFloats(l []float32, r []float32) int { 71 switch { 72 case l == nil && r == nil: 73 return 0 74 case l == nil: 75 return -1 76 case r == nil: 77 return 1 78 } 79 l_sz := len(l) 80 r_sz := len(r) 81 for i := 0; i < l_sz && i < r_sz; i++ { 82 if l[i] > r[i] { 83 return 1 84 } 85 if l[i] < r[i] { 86 return -1 87 } 88 } 89 return l_sz - r_sz 90 } 91 92 func CompareToLongs(l []int64, r []int64) int { 93 switch { 94 case l == nil && r == nil: 95 return 0 96 case l == nil: 97 return -1 98 case r == nil: 99 return 1 100 } 101 l_sz := len(l) 102 r_sz := len(r) 103 for i := 0; i < l_sz && i < r_sz; i++ { 104 if l[i] > r[i] { 105 return 1 106 } 107 if l[i] < r[i] { 108 return -1 109 } 110 } 111 return l_sz - r_sz 112 } 113 114 func CompareToDoubles(l []float64, r []float64) int { 115 switch { 116 case l == nil && r == nil: 117 return 0 118 case l == nil: 119 return -1 120 case r == nil: 121 return 1 122 } 123 l_sz := len(l) 124 r_sz := len(r) 125 for i := 0; i < l_sz && i < r_sz; i++ { 126 if l[i] > r[i] { 127 return 1 128 } 129 if l[i] < r[i] { 130 return -1 131 } 132 } 133 return l_sz - r_sz 134 } 135 136 func CompareToStrings(l []string, r []string) int { 137 switch { 138 case l == nil && r == nil: 139 return 0 140 case l == nil: 141 return -1 142 case r == nil: 143 return 1 144 } 145 l_sz := len(l) 146 r_sz := len(r) 147 for i := 0; i < l_sz && i < r_sz; i++ { 148 rt := strings.Compare(l[i], r[i]) 149 if rt != 0 { 150 return rt 151 } 152 } 153 return l_sz - r_sz 154 // 155 // l_sz := len(l) 156 // r_sz := len(r) 157 // for i := 0; i < l_sz && i < r_sz; i++ { 158 // if l[i] > r[i] { 159 // return 1 160 // } 161 // if l[i] < r[i] { 162 // return -1 163 // } 164 // } 165 // return l_sz - r_sz 166 } 167 168 func EqualBytes(l []byte, r []byte) bool { 169 return CompareToBytes(l, r) == 0 170 } 171 172 func EqualShorts(l []int16, r []int16) bool { 173 return CompareToShorts(l, r) == 0 174 } 175 176 func EqualInts(l []int32, r []int32) bool { 177 return CompareToInts(l, r) == 0 178 } 179 180 func EqualFloats(l []float32, r []float32) bool { 181 return CompareToFloats(l, r) == 0 182 } 183 184 func EqualLongs(l []int64, r []int64) bool { 185 return CompareToLongs(l, r) == 0 186 } 187 188 func EqualDoubles(l []float64, r []float64) bool { 189 return CompareToDoubles(l, r) == 0 190 } 191 192 func EqualStrings(l []string, r []string) bool { 193 return CompareToStrings(l, r) == 0 194 } 195 196 func CompareToString(l, r string) int { 197 // if l == r { 198 // return 0 199 // } else { 200 // if len(l) > len(r) { 201 // return 1 202 // } else { 203 // return -1 204 // } 205 // 206 // } 207 // 208 return strings.Compare(l, r) 209 210 } 211 212 func CompareToInt(l, r int) int { 213 if l == r { 214 return 0 215 } else { 216 if l > r { 217 return 1 218 } else { 219 return -1 220 } 221 222 } 223 } 224 225 func CompareToLong(l, r int64) int { 226 if l == r { 227 return 0 228 } else { 229 if l > r { 230 return 1 231 } else { 232 return -1 233 } 234 } 235 } 236 237 func CompareToFloat(l, r float32) int { 238 if l == r { 239 return 0 240 } else { 241 if l > r { 242 return 1 243 } else { 244 return -1 245 } 246 247 } 248 } 249 250 func CompareToDouble(l, r float64) int { 251 if l == r { 252 return 0 253 } else { 254 if l > r { 255 return 1 256 } else { 257 return -1 258 } 259 260 } 261 }