From edd2e847922684168e93444bf1d2aa8a189b8e0a Mon Sep 17 00:00:00 2001 From: huangsimin Date: Wed, 4 Mar 2020 11:24:36 +0800 Subject: [PATCH] add []byte []rune compare --- compare/compare.go | 78 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/compare/compare.go b/compare/compare.go index 79c77ee..cfe0397 100644 --- a/compare/compare.go +++ b/compare/compare.go @@ -8,6 +8,84 @@ import "time" // k1 < k2 --> -1 type Compare func(k1, k2 interface{}) int +// RuneArray []rune compare +func RuneArray(k1, k2 interface{}) int { + s1 := k1.([]rune) + s2 := k2.([]rune) + + switch { + case len(s1) > len(s2): + for i := 0; i < len(s2); i++ { + if s1[i] != s2[i] { + if s1[i] > s2[i] { + return 1 + } + return -1 + } + } + return 1 + case len(s1) < len(s2): + for i := 0; i < len(s1); i++ { + if s1[i] != s2[i] { + if s1[i] > s2[i] { + return 1 + } + return -1 + } + } + return -1 + default: + for i := 0; i < len(s1); i++ { + if s1[i] != s2[i] { + if s1[i] > s2[i] { + return 1 + } + return -1 + } + } + return 0 + } +} + +// ByteArray []byte compare +func ByteArray(k1, k2 interface{}) int { + s1 := k1.([]byte) + s2 := k2.([]byte) + + switch { + case len(s1) > len(s2): + for i := 0; i < len(s2); i++ { + if s1[i] != s2[i] { + if s1[i] > s2[i] { + return 1 + } + return -1 + } + } + return 1 + case len(s1) < len(s2): + for i := 0; i < len(s1); i++ { + if s1[i] != s2[i] { + if s1[i] > s2[i] { + return 1 + } + return -1 + } + } + return -1 + default: + for i := 0; i < len(s1); i++ { + if s1[i] != s2[i] { + if s1[i] > s2[i] { + return 1 + } + return -1 + } + } + return 0 + } +} + // String comp func String(k1, k2 interface{}) int { s1 := k1.(string)