本博文讲解prototype的学习笔记,内容包含了syntax、option go_package、message、service进行讲解,举例了常见写法。
文章目录
- [1.syntax 声明语法版本](#1.syntax 声明语法版本)
- [2.package 给当前的proto分配包名称](#2.package 给当前的proto分配包名称)
- 3.option
- 4.message
-
- [4.1 切片数组](#4.1 切片数组)
- [4.2 map](#4.2 map)
- [4.3 类型嵌套](#4.3 类型嵌套)
- [5. 消息定义](#5. 消息定义)
go
syntax = "proto3"; // 声明编译器用的是prototype3
package person;
option go_package="/projectRPCTest3/pb/person;person";
message PersonReq{
string name =1;
int32 age = 2;
}
message PersonRes{
string name = 1;
int32 age = 2;
}
service SearchService {
rpc Search(PersonReq) returns (PersonRes);
rpc SearchIn(stream PersonReq) returns(PersonRes);
rpc SearchOut(PersonReq) returns (stream PersonRes);
rpc SearchIO(stream PersonReq) returns (stream PersonRes);
}
1.syntax 声明语法版本
go
syntax = "proto3";
2.package 给当前的proto分配包名称
go
package person;
3.option
go
option go_package = "/projectRPCTest3/pb/person;person";
影响到实际效果是:
- Go 包的路径:
/projectRPCTest3/pb/person
- Go 包名:
person
4.message
go
message PersonRes{
string name = 1;
int32 age = 2;
}
4.1 切片数组
go
repeated string hobbies = 3; // 表示多个字符串
repeated int32 scores = 4; // 表示多个整数
4.2 map
go
map<string, int32> scores = 3; // 例如,保存各科成绩
4.3 类型嵌套
go
Message User {
int32 id = 1;
string name = 2;
}
Message Student{
int32 id = 1;
User user = 2;
int32 score = 3;
}
5. 消息定义
go
service SearchService {
rpc Search(PersonReq) returns (PersonRes);
rpc SearchIn(stream PersonReq) returns(PersonRes);
rpc SearchOut(PersonReq) returns (stream PersonRes);
rpc SearchIO(stream PersonReq) returns (stream PersonRes);
}