An even faster lookup is creating a [256]byte array for the replacements, 
having the 9 replacements candidates _position_ having the replacements, 
all others the identity:

// prepare the lookup table
var a [256]byte
for i := 0; i<256; i++ {
  a[i] = i
}
a[37] = '-'
a[129] = '-'
...

// replace the bytes, in-place operation
func replace(p []byte) {
  for i, b := range p {
    p[i] = a[b]
  }
}

Although map lookup is O(1), array lookup is O(1) with a smaller constant 
factor, I'm sure.
And this has no branching, so should be even faster.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to