package reverse import "unicode/utf8" func swap(a *byte, b *byte) { *a ^= *b *b ^= *a *a ^= *b } func reverse(b []byte) { for i := 0; i < len(b); { _, sz := utf8.DecodeRune(b[i:]) l := i r := i + sz - 1 for l < r { swap(&b[l], &b[r]) l++ r-- } i += sz } l := 0 r := len(b) - 1 for l < r { swap(&b[l], &b[r]) l++ r-- } }