Skip to main content

gRPC demo code generation


After completing the goctl installation, we can create a minimal gRPC service to get an overview of goctl's go-zero gRPC service.

Task Targets

  1. Learn how to create a minimized gRPC service using goctl
  2. Preliminary understanding of the project structure of go-zero
  3. Preliminary method of gRPC local debugging


  1. Complete golang installation
  2. Complete goctl installation

Code Generation

# Create workspaces and enter the directory
$ mkdir -p ~/workspace/rpc && cd ~/workspace/rpc
# Execute instructions generated demo service
$ goctl rpc new demo

After executing the instruction, a demo directory will be generated under the current directory that contains a minimized gRPC service. We will check the directory structure of the service.

# Enter the demo service directory
$ cd ~/workspace/rpc/demo
# view file list
$ ls
demo demo.go demo.proto democlient etc go.mod internal
# View directory interface
$ tree
├── demo
│   ├── demo.pb.go
│   └── demo_grpc.pb.go
├── demo.go
├── demo.proto
├── democlient
│   └── demo.go
├── etc
│   └── demo.yaml
├── go.mod
└── internal
├── config
│   └── config.go
├── logic
│   └── pinglogic.go
├── server
│   └── demoserver.go
└── svc
└── servicecontext.go

API, RPC, Job Directory structure is similar to what the go-zero project structure can look at Project Structure

Write simple logic code

After completing the above code generation, we can find ~/workspace/api/demo/internal/logic/demologic.go files, replace codes at line 29 as follows :

return &demo.Response{
}, nil

Then set your profile ~/workspace/rpc/depo/etc/demo.yamlremove 3 to 7 to lines of content, then add-on Mode: dev to end, making configuration file content:

Name: demo.rpc
Mode: dev

:::Note goctl generates minimized gRPC service by registering information about the current service from ETCD Register, so registration is not required for this demonstration, so the registration center configuration in the configuration file has been deleted. :::

Start service

After writing the above code, we can start the service with the following instructions:

# Enter service directory
$ cd ~/workspace/rpc/demo
# Organize dependencies
$ go mod tidy
# Run go program
$ go go run demo.go

When you see the following output Starting rpc server at that the service has been successfully started, then we come to visit the gRPC service.

$ grpcurl -plaintext demo.Demo/Ping

on behalf of your service has been successfully launched when you see the following output in the terminal.

"pong": "pong"

grpcurl is a command-line tool for accessing gRPC services, for details, please refer to 《grpcurl》

When you come here following the steps in the document, congratulations, you have completed the creation and startup of the simplest go-zero api service. For instructions on using the goctl tool, please refer to "CLI Tools", for a complete description of the go-zero api service, please refer to 《HTTP Server》.