proto文件类型补充

lkpalu Lv3

proto文件类型及语法

proto文件的类型上次写了message和service,此外还有map和enum

代码如下

map

1
2
3
4
5
message Pong{
string message = 1;
Test t = 2;
map<string, int32> m = 3;
}

enum

1
2
3
4
enum Test{
A = 0;
B = 1;
}

生成的go语言代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

//enum类型

type Test int32

const (
Test_A Test = 0
Test_B Test = 1
)

// Enum value maps for Test.
var (
Test_name = map[int32]string{
0: "A",
1: "B",
}
Test_value = map[string]int32{
"A": 0,
"B": 1,
}
)
1
2
3
4
5
6
7
8
9
10
11
//Pong结构体

type Pong struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields

Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
T Test `protobuf:"varint,2,opt,name=t,proto3,enum=Server.Test" json:"t,omitempty"`
M map[string]int32 `protobuf:"bytes,3,rep,name=m,proto3" json:"m,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}

定义的enum类型会定义为int32的常量

补充语法

上次在proto中未提到import,

proto中也支持import导入其他文件中定义的数据类型

1
2
import "base.proto";
import "google/protobuf/empty.proto";

注意

在生成代码时需要同时为多个proto文件生成代码,否则会出现找不到数据类型的情况

  • 标题: proto文件类型补充
  • 作者: lkpalu
  • 创建于 : 2024-11-10 21:56:19
  • 更新于 : 2024-11-10 22:03:25
  • 链接: https://redefine.ohevan.com/2024/11/10/proto文件类型补充/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
proto文件类型补充