Pārlūkot izejas kodu

using an offset array now

Charlie Andrews 11 gadi atpakaļ
vecāks
revīzija
b6e5cdcf1f
1 mainītis faili ar 4 papildinājumiem un 21 dzēšanām
  1. 4 21
      uuid.go

+ 4 - 21
uuid.go

@@ -29,7 +29,6 @@ const (
 	VariantIETF      = 2
 	VariantMicrosoft = 6
 	VariantFuture    = 7
-	HexString = "0123456789abcdef"
 )
 
 func init() {
@@ -147,28 +146,12 @@ func UUIDFromTime(aTime time.Time) UUID {
 // String returns the UUID in it's canonical form, a 32 digit hexadecimal
 // number in the form of xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
 func (u UUID) String() string {
-	var b1, b2 byte
+	var offsets = [...]int{0, 2, 4, 6, 9, 11, 14, 16, 19, 21, 24, 26, 28, 30, 32, 34}
+	const hexString = "0123456789abcdef"
 	r := make([]byte, 36)
 	for i, b := range u {
-		b1 = HexString[b >> 4]
-		b2 = HexString[b &^ 240]
-		switch {
-		case i < 4:
-			r[i*2] = b1
-			r[(i*2)+1] = b2
-		case i >= 4 && i < 6:
-			r[(i*2)+1] = b1
-			r[(i*2)+2] = b2
-		case i >= 6 && i < 8:
-			r[(i*2)+2] = b1
-			r[(i*2)+3] = b2
-		case i >= 8 && i < 10:
-			r[(i*2)+3] = b1
-			r[(i*2)+4] = b2
-		case i >= 10:
-			r[(i*2)+4] = b1
-			r[(i*2)+5] = b2
-		}
+                r[offsets[i]] = hexString[b>>4]
+		r[offsets[i]+1] = hexString[b&0xF]
 	}
 	r[8] = '-'
 	r[13] = '-'