Back to Go Zero

RPC Examples

tools/goctl/rpc/example/README.md

1.10.32.2 KB
Original Source

RPC Examples

English | 中文 | 한국어

This directory contains complete examples for all goctl rpc code generation scenarios.

Each example includes:

  • .proto source files
  • README.md (English), README-cn.md (中文), and README-ko.md (한국어) documentation

Examples

#DirectoryScenarioKey Flags
0101-basicBasic single service, no imports
0202-import-siblingImport sibling proto file--proto_path=.
0303-import-subdirImport proto from subdirectory--proto_path=.
0404-transitive-importTransitive imports (A → B → C)--proto_path=.
0505-multiple-servicesMultiple services in one proto--multiple
0606-wellknown-typesGoogle well-known types in messages
0707-external-proto-same-pkgExternal proto, same go_package-I ./ext_protos
0808-external-proto-diff-pkgExternal proto, different go_package-I ./ext_protos
0909-google-types-as-rpcGoogle well-known types as RPC parameters
1010-streamingServer/client/bidirectional streaming

Prerequisites

Quick Start

bash
# Install protoc plugins
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

# Try the basic example
cd 01-basic
mkdir -p output && cd output && go mod init example.com/demo && cd ..
goctl rpc protoc greeter.proto \
  --go_out=output --go-grpc_out=output --zrpc_out=output \
  --go_opt=module=example.com/demo --go-grpc_opt=module=example.com/demo \
  --module=example.com/demo -I .