更方便的在微信公众号阅读文章可以关注公众号:海生的go花园
一、安装protoc以及插件
在第二章,我们介绍了,如何写一个.proto文件。
当我们有了一个.proto文件,揭晓来,我们就是使用protoc命令编译.proto文件,生成对应go文件。
1.1 安装protoc命令
brew install protobuf
1.2 安装protobuf插件
1.2.1、安装protoc-gen-go插件,--go_out
选项
用来生成.pb.go文件,用来处理message等正常的类型。
go install google.golang.org/protobuf/cmd/protoc-gen-go
1.2.2、安装protoc-gen-go-grpc插件,--go-grpc_opt
选项
用来处理grpc相关的程序。
google.golang.org/grpc/cmd/protoc-gen-go-grpc
二、使用protoc命令生成go代码
2.1 初始化go项目
首先我们打开grpc-demo1目录(在第二章创建的),然后go mod init。初始化这个go项目。
$ cd grpc-demo1
$ go mod init github/hisheng/grpc-demo1
此时查看我们的目录,执行tree命令。
➜ grpc-demo1 git:(master) $ tree
.
├── api
│ └── hello.proto
├── go.mod
└── go.sum
1 directory, 3 files
我们的目录多了 go.mod文件以及go.sum。
2.2 使用protoc命令生成go代码
现在终于到了我们生成实际go代码的时候了,让我们在grpc-demo1执行如下命令。
protoc --go_out=. --go_opt=paths=source_relative \
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
api/hello.proto
我们终于执行了protoc命令了,此时我们增加了两个参数选项。
--go_out 生成了 hello.pb.go 文件
--go-grpc_out 生成了 hello_grpc.pb.go 文件
此时我们再查看grpc-demo1,执行tree命令
➜ grpc-demo1 git:(master) ✗ tree
.
├── api
│ ├── hello.pb.go
│ ├── hello.proto
│ └── hello_grpc.pb.go
├── go.mod
└── go.sum
1 directory, 5 files
可以看到刚生成的hello.pb.go和hello_grpc.pb.go两个go文件。
2.3 使用go mod tidy 下载依赖库
我们发现hello.pb.go,以及hello_grpc.pb.go文件中,有一些go依赖没有下载。此时再下载一下。
在grpc-demo1目录执行
go mod tidy
至此,我们生成的go代码,就没有问题了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。