golang版本。

1、基础软件

  protoc: 支持序列化的高效、低占用软件。

  protoc-gen-go: 支持go编译的插件。

2、脚手架

  生成核心交互逻辑,当前版本,引自官网: https://grpc.io/docs/languages/go/quickstart/#regenerate-grpc-code (备注: 重点参考官网)

  以下,为 1.47.0 之前的版本。

protoc --proto_path=IMPORT_PATH  --go_out=OUT_DIR  --go_opt=paths=source_relative path/to/file.proto

  新版编辑: 2023-02-10

  以下,为

protoc --go_out=. --go_opt=paths=source_relative \
    --go-grpc_out=. --go-grpc_opt=paths=source_relative \
    helloworld/helloworld.proto

 

  解释:

    proto_path或者-I :指定 import 路径,可以指定多个参数,编译时按顺序查找,不指定时默认查找当前目录。

      proto 文件中也可以引入其他 .proto 文件,这里主要用于指定被引入文件的位置。

    go_out:golang编译支持,指定输出文件路径

    go_opt:指定参数,比如--go_opt=paths=source_relative就是表明生成文件输出使用相对路径。

    path/to/file.proto :被编译的 .proto 文件放在最后面

  file.proto内容

 1 syntax = "proto3";
 2 
 3 //option go_package = "path;name";
 4 //path 表示生成的go文件的存放地址,会自动生成目录的。
 5 //name 表示生成的go文件所属的包名
 6 option go_package="./;proto";
 7 // 定义包名
 8 package proto;
 9 
10 // 定义Greeter服务
11 service Greeter {
12   // 定义SayHello方法,接受HelloRequest消息, 并返回HelloReply消息
13   rpc SayHello (HelloRequest) returns (HelloReply) {}
14 }
15 
16 // 定义HelloRequest消息
17 message HelloRequest {
18   // name字段
19   string name = 1;
20 }
21 
22 // 定义HelloReply消息
23 message HelloReply {
24   // message字段
25   string message = 1;
26 }

 

posted on 2022-06-28 01:30  黑熊一只  阅读(143)  评论(0)    收藏  举报