Msgpack
msgpack.org[Go] MessagePack encoding for Golang
> msgpack is brought to you by :star: [**uptrace/uptrace**](https://github.com/uptrace/uptrace). > Uptrace is an [open source APM](https://uptrace.dev/get/open-source-apm.html) and blazingly fast > [distributed tracing tool](https://get.uptrace.dev/compare/distributed-tracing-tools.html) powered > by OpenTelemetry and ClickHouse. Give it a star as well! The project is written primarily in Go, distributed under the BSD 2-Clause "Simplified" License license, first published in 2012. It has gained significant community traction with 2,654 stars and 251 forks on GitHub. Key topics include: encoding, go, golang, msgpack, serialization.
MessagePack encoding for Golang
msgpack is brought to you by :star: 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!
Resources
Features
- 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.
Installation
msgpack supports 2 last Go versions and requires support for
Go modules. So make sure to initialize a Go module:
shellgo mod init github.com/my/repo
And then install msgpack/v5 (note v5 in the import; omitting it is a popular mistake):
shellgo get github.com/vmihailenco/msgpack/v5
Quickstart
goimport "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 }
See also
- Golang ORM for PostgreSQL, MySQL, MSSQL, and SQLite
- Golang PostgreSQL
- Golang HTTP router
- Golang ClickHouse ORM
Contributors
Thanks to all the people who already contributed!
<a href="https://github.com/vmihailenco/msgpack/graphs/contributors"> <img src="https://contributors-img.web.app/image?repo=vmihailenco/msgpack" /> </a>Contributors
Showing top 12 contributors by commit count.

