Skip to content

Latest commit

 

History

History
81 lines (62 loc) · 2.13 KB

README.md

File metadata and controls

81 lines (62 loc) · 2.13 KB

bytesort

GoDoc Build Status Coverage Status Go Report Card

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.

Install

go get github.com/nochso/bytesort

Usage

Full documentation is available at godoc.org.

Output example

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.

Change log and versioning

This project adheres to Semantic Versioning.

See the CHANGELOG for a full history of releases.

License

MIT.