博客 / 詳情

返回

《go入門grpc》第三章:從 proto 文件自動生成go代碼

更方便的在微信公眾號閲讀文章可以關注公眾號:海生的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代碼,就沒有問題了。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.