Generating stubs using protoc

Here’s an example of what a protoc command might look like to generate Go stubs, assuming that you’re at the root of your repository and you have your proto files in a directory called proto:

  1. $ protoc -I ./proto \
  2. --go_out ./proto --go_opt paths=source_relative \
  3. --go-grpc_out ./proto --go-grpc_opt paths=source_relative \
  4. ./proto/helloworld/hello_world.proto

We use the go and go-grpc plugins to generate Go types and gRPC service definitions. We’re outputting the generated files relative to the proto folder, and we’re using the paths=source_relative option, which means that the generated files will appear in the same directory as the source .proto file.

This will have generated a *.pb.go and a *_grpc.pb.go file for proto/helloworld/hello_world.proto.

Next