Package bytesort encodes common Go types as binary/byte slices that are bytewise sortable.
The output is intended for binary/bytewise comparison and sorting. More specifically for creating the keys used in indexes of key value stores.
go get github.com/nochso/bytesort
Full documentation is available at godoc.org.
vv := []interface{}{
"abc",
int16(math.MinInt16),
int16(0),
int16(math.MaxInt16),
false,
true,
}
for _, v := range vv {
b, err := bytesort.Encode(v)
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("% 8X %-6T %#v\n", b, v, v)
}
// Output:
// 61 62 63 string "abc"
// 00 00 int16 -32768
// 80 00 int16 0
// FF FF int16 32767
// 00 bool false
// 01 bool true
Use bytes.Compare and
sort.Slice to sort a slice of []byte
:
input := [][]byte{ ... }
sort.Slice(s, func(i, j int) bool {
return bytes.Compare(s[i], s[j]) < 0
})
Using sort.Sort on structs that implement sort.Interface might be faster.
sort.Search might also be of interest.
This project adheres to Semantic Versioning.
See the CHANGELOG for a full history of releases.
MIT.