This pair of client/server implementations shows how to customize the serialization method in GRPC in Go.
e.g.
$ brew install go protobuf
$ go get github.com/golang/protobuf
$ go get github.com/yugui/grpc-custom-serializer/go
$ cd go
$ go generate
$ go build -o greeter_client github.com/yugui/grpc-custom-serializer/go/client
$ go build -o greeter_server github.com/yugui/grpc-custom-serializer/go/server
$ ./greeter_server -logtostderr &
$ ./greeter_client -logtostderr -name=$USER
$ bazel build //go/...
$ bazel-bin/go/server/darwin_amd64_stripped/server -logtostderr &
$ bazel-bin/go/client/darwin_amd64_stripped/client -logtostderr -name=$USER