Go Gets Protocol Buffering

The latest Go API release includes support for protocol buffers: Google's language-neutral and Platform-neutral data interchange format. Although protocol buffer bindings were originally rolled out for Go between 2010 and 2012, Go and Protocol Buffers have both evolved. Because user changes have evolved to a point where making new practices compatible with older versions, the latest Go release includes a completely rebuilt Protobuf module.

Reflection is the key new feature of the latest release. The reflect package provides a view of values according to the protocol buffer type system. The team has given a detailed overview of reflection with an example at the Golang blog.

Although the new version is no backward compatible, older versions of Go will remain available. The team commented:

"We know that not all users will move to a new major version of a package at the same rate. Some will switch quickly; others may remain on the old version indefinitely. Even within a single program, some parts may use one API while others use another. It is essential, therefore, that we continue to support programs that use APIv1."

The Go release includes new support for protocol buffers, reflection support, customer message implementations, and a new API surface. Other features to note include canonical JSON mapping, proto. Message, comparing protocol buffer messages, and support for protocol compiler plugins. Check out the blog post announcement to learn more.