この記事は筆者の.proto
ファイルからのgolangコード生成時の失敗談を元に理解を深めていただく記事です。
(そんなん読めばわかるだろ!って話だったのですが、大目に見てください)
protocの公式サンプル
上記記事のサンプルでは、.proto
ファイルからGo言語へのコード生成をする際に
$ protoc --go_out=. --go_opt=paths=source_relative \
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
helloworld/helloworld.proto
としています。
とりあえず生成してみる
上記の記事を見た私は、オプションいっぱいでわからないので、とりあえず最小限で実行してみよう!と思い
$ protoc --go_out=.
と実行してみました。すると、helloworld.pb.goは生成されるけど、helloworld_grpc.pb.goが生成されていません!
なぜでしょう?
理由は簡単で、--go-grpc_out=
が指定されていないからです!
-
--go_out
は、*.pb.go
-
--go-grpc_opt
は、*._grpc.pb.go
の生成に関係しているということなんですね~。
そりゃそうか
皆さんも、コード生成時には、--go_out
と --go-grpc_opt
の指定をお忘れなきよう。それでは~