neo-go/pkg/util/slice/array.go
Roman Khimov 74bf4a8e3f slice: add Clean microfunction
To be used for various cleaning purposes, one line is better than three lines.
2022-09-02 14:44:32 +03:00

37 lines
731 B
Go

/*
Package slice contains byte slice helpers.
*/
package slice
// CopyReverse returns a new byte slice containing reversed version of the
// original.
func CopyReverse(b []byte) []byte {
dest := make([]byte, len(b))
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]
}
}
// Copy copies the byte slice into new slice (make/copy).
func Copy(b []byte) []byte {
d := make([]byte, len(b))
copy(d, b)
return d
}
// Clean wipes the data in b by filling it with zeros.
func Clean(b []byte) {
for i := range b {
b[i] = 0
}
}