Skip to content

Package bytesort encodes common types as binary/byte slices that are bytewise sortable.

License

Notifications You must be signed in to change notification settings

nochso/bytesort

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Package bytesort encodes common types as binary/byte slices that are bytewise sortable.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages