msgpack is brought to you by ⭐ uptrace/uptrace. Uptrace is an open source APM and blazingly fast distributed tracing tool powered by OpenTelemetry and ClickHouse. Give it a star as well!
- Primitives, arrays, maps, structs, time.Time and interface{}.
 - Appengine *datastore.Key and datastore.Cursor.
 - CustomEncoder/CustomDecoder interfaces for custom encoding.
 - Extensions to encode type information.
 - Renaming fields via 
msgpack:"my_field_name"and alias viamsgpack:"alias:another_name". - Omitting individual empty fields via 
msgpack:",omitempty"tag or all empty fields in a struct. - Map keys sorting.
 - Encoding/decoding all structs as arrays or individual structs.
 - Encoder.SetCustomStructTag with Decoder.SetCustomStructTag can turn msgpack into drop-in replacement for any tag.
 - Simple but very fast and efficient queries.
 
msgpack supports 2 last Go versions and requires support for Go modules. So make sure to initialize a Go module:
go mod init github.com/my/repoAnd then install msgpack/v5 (note v5 in the import; omitting it is a popular mistake):
go get github.com/vmihailenco/msgpack/v5import "github.com/vmihailenco/msgpack/v5"
func ExampleMarshal() {
    type Item struct {
        Foo string
    }
    b, err := msgpack.Marshal(&Item{Foo: "bar"})
    if err != nil {
        panic(err)
    }
    var item Item
    err = msgpack.Unmarshal(b, &item)
    if err != nil {
        panic(err)
    }
    fmt.Println(item.Foo)
    // Output: bar
}- Golang ORM for PostgreSQL, MySQL, MSSQL, and SQLite
 - Golang PostgreSQL
 - Golang HTTP router
 - Golang ClickHouse ORM
 
Thanks to all the people who already contributed!
