slice: add Reverse function, deduplicate code a bit

This commit is contained in:
Roman Khimov 2021-07-18 16:08:23 +03:00
parent 100e97d772
commit a54e3516d1
4 changed files with 21 additions and 16 deletions

View file

@ -7,8 +7,17 @@ package slice
// original.
func CopyReverse(b []byte) []byte {
dest := make([]byte, len(b))
for i, j := 0, len(b)-1; i <= j; i, j = i+1, j-1 {
dest[i], dest[j] = b[j], b[i]
}
reverse(dest, b)
return dest
}
// Reverse does in-place reversing of byte slice.
func Reverse(b []byte) {
reverse(b, b)
}
func reverse(dst []byte, src []byte) {
for i, j := 0, len(src)-1; i <= j; i, j = i+1, j-1 {
dst[i], dst[j] = src[j], src[i]
}
}